1. Get the proportions of main cell types from each FACS sorted sample

library(Seurat)
library(dplyr)
library(Matrix)

Attaching package: ‘Matrix’

The following object is masked from ‘package:reshape’:

    expand
library(ggplot2)

Read in the 4 sorted Populations separately processed and annotated

Check each object for main cell type labels


table(Neurons1$Cell_Types)
dim(Neurons1)  # total cells 1723

table(Neurons2$Cell_Types)
dim(Neurons2) # total cells 8884

table(Astro$Cell_Type)
dim(Astro) # 20000

table(RG$Cell_Types)
dim(RG)

Fix each separate populations - Add FACS sort name - Down sample - check proportions are maintained - rename Cell_Type in Astro to be the same name for ‘Cell_Types’


# cell type variables weren't named the same and the project ID are not the population names
# I'll further down sample Glia1 (LaunchSample3)

# change orig.ident names
Idents(Neurons2) <- 'orig.ident'
Neurons2$orig.ident <- 'Neurons2'
Idents(Astro) <- 'orig.ident'
Astro$orig.ident <- 'Astrocytes'
Idents(RG) <- 'orig.ident'
RG$orig.ident <- 'RadialGlia'


# rename metadata 
Idents(Astro) <- 'Cell_Type'
Astro$Cell_Types <- Idents(Astro)
table(Astro$Cell_Types)
Astro$Cell_Type <- NULL

# down sample
Idents(Astro) <- 'orig.ident'
Astro.sub <- subset(Astro, downsample = 9000)
table(Astro.sub$Cell_Types)
# good proportions are maintained
# save downsampled object






all.pops <- merge(Neurons1, y = c(Neurons2, Astro.sub, RG), project = "PhenoID")

Try to down sample to get closer proportions of starting populations


# down sample
Idents(Astro) <- 'orig.ident'
Astro.sub <- subset(Astro, downsample = 3000)
table(Astro$Cell_Types)
table(Astro.sub$Cell_Types)

# down sample
Idents(Neurons2) <- 'orig.ident'
Neurons2.sub <- subset(Neurons2, downsample = 2000)
dim(Neurons2)
table(Neurons2$Cell_Types)
table(Neurons2.sub$Cell_Types)

# down sample
Idents(RG) <- 'orig.ident'
RG.sub <- subset(RG, downsample = 2000)
dim(RG)
table(RG$Cell_Types)
table(RG.sub$Cell_Types)

all.pops <- merge(Neurons1, y = c(Neurons2.sub, Astro.sub, RG.sub), project = "PhenoID")
table(all.pops$orig.ident)

Check merge


table(all.pops$orig.ident)
table(all.pops$Cell_Types)

# I might want to down sample all the other populations accept Neurons1 
# they cluster fairly well
# save the merged object 
pathway <- "/Users/rhalenathomas/Documents/Data/scRNAseq/PhenoID/scRNAseqSorted/objs/"
saveRDS(all.pops, paste(pathway,"All4popssub07102022.RDS"))

#seu.q <- readRDS(paste(pathway,"All4pops07102022.RDS"))
#seu.q <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PhenoID/scRNAseqSorted/objs/All4popssub07102022.RDS")

Normalize and cluster


# standard workflow 
# repeated same for all.pops and all.pops sub
seu <- NormalizeData(all.pops, normalization.method = "LogNormalize", scale.factor = 10000)
seu <- FindVariableFeatures(seu, selection.method = "vst", nfeatures = 2500)
seu <- ScaleData(seu)
seu <- RunPCA(seu)
ElbowPlot(seu, ndims = 30)
# best choice PC = 15

# didn't save the objects need to repeat
seu.q <- NormalizeData(seu.q, normalization.method = "LogNormalize", scale.factor = 10000)
seu.q <- FindVariableFeatures(seu.q, selection.method = "vst", nfeatures = 2500)
seu.q <- ScaleData(seu.q)
seu.q <- RunPCA(seu.q)
ElbowPlot(seu.q, ndims = 30)

Find clusters


seu <- RunUMAP(seu, reduction = "pca", n.neighbors = 25, dims = 1:20)
DimPlot(seu, reduction = "umap")

seu.q <- FindNeighbors(seu, dims = 1:20, k.param = 25)
seu.q <- FindClusters(seu.q, resolution = c(0,0.2,0.6,1,1.2, 1.5, 1.8))

# clear out other clustering to be able to use clustree
library(clustree)

#columns.to.remove <- c("RNA_snn_res.0.05", "RNA_snn_res.0.1","RNA_snn_res.0.25","RNA_snn_res.0.5",
#                       "RNA_snn_res.0.4","RNA_snn_res.0.8")
#for(i in columns.to.remove) {
#  seu.q[[i]] <- NULL
#}


#DimPlot(seu.q, reduction = "umap", group.by = 'RNA_snn_res.0.05')
#DimPlot(seu.q, reduction = "umap", group.by = 'RNA_snn_res.0.1')
DimPlot(seu.q, reduction = "umap", group.by = 'RNA_snn_res.0.2', label = TRUE)
#DimPlot(seu.q, reduction = "umap", group.by = 'RNA_snn_res.0.4')
DimPlot(seu.q, reduction = "umap", group.by = 'RNA_snn_res.0.6',label = TRUE)
DimPlot(seu.q, reduction = "umap", group.by = 'RNA_snn_res.1', label = TRUE)
DimPlot(seu.q, reduction = "umap", group.by = 'RNA_snn_res.1.2', label = TRUE)
DimPlot(seu.q, reduction = "umap", group.by = 'RNA_snn_res.1.8', label = TRUE)
DimPlot(seu.q, group.by = 'orig.ident', label = TRUE)
#VlnPlot(seu.q, features = 'nFeature_RNA', group.by = 'orig.ident')
DimPlot(seu.q, group.by = 'Cell_Types', label = TRUE)

DimPlot(seu.q, group.by = 'Cell_Types', split.by = 'orig.ident')
DimPlot(seu.q, group.by = 'RNA_snn_res.1.8', split.by = 'orig.ident')

# repeat when object wasn't saved
seu.q <- RunUMAP(seu.q, reduction = "pca", n.neighbors = 25, dims = 1:20)
DimPlot(seu.q, reduction = "umap")

seu.q <- FindNeighbors(seu.q, dims = 1:20, k.param = 25)
seu.q <- FindClusters(seu.q, resolution = c(0,0.2,0.6,1,1.2, 1.8))

# clear out other clustering to be able to use clustree
library(clustree)

columns.to.remove <- c("RNA_snn_res.0.05", "RNA_snn_res.0.1","RNA_snn_res.0.25","RNA_snn_res.0.5",
                       "RNA_snn_res.0.4","RNA_snn_res.0.8")
for(i in columns.to.remove) {
  seu.q[[i]] <- NULL
}



DimPlot(seu.q, reduction = "umap", group.by = 'RNA_snn_res.1.8', label = TRUE)
DimPlot(seu.q, group.by = 'orig.ident', label = TRUE)
DimPlot(seu.q, group.by = 'Cell_Types', label = TRUE)
DimPlot(seu.q, group.by = 'Cell_Types', split.by = 'orig.ident')
DimPlot(seu.q, group.by = 'RNA_snn_res.1.8', split.by = 'orig.ident')


clustree(seu.q)

Number FACS populations in each cluster Number of Cell Types in each cluster


# FACS populations per cluster
table(seu.q$RNA_snn_res.1.8, seu.q$orig.ident)

# Cell Types per cluster
table(seu.q$RNA_snn_res.1.8, seu.q$Cell_Types)

Re annotate these clusters with subgroups


Idents(seu.q) <- 'RNA_snn_res.1.8'
# from k.param 49
cluster.ids <- c("Astro1","Neurons1","RG1","Astro2",
                 "RG2","Neurons2","Neurons3","Astro3",
                 "Neurons3","Astro4","Astro5","Neurons4",
                 "RG3","RG4","Neurons5","Neurons6",
                 "Endothelial","Neurons7")
# from k.param 249
cluster.ids <- c("RG1","Neurons1","Astro1","Astro2","Neurons2",
                 "Astro-Mix","Neurons-RG","RG2",
                 "Neurons3",
                 "Endothelial")
# k.param 125
cluster.ids <- c("Astro1","Neurons1","Astro2","Neurons1",
                 "RG1-Neurons","Neurons2","Astro3-Neurons-RG","RG1",
                 "Neurons3","Neurons4","RG2",
                 "Endothelial","Mix")
# k.param 25
cluster.ids <- c("Astro1","Neurons1","RG-Neurons1","Astro2","Neurons2",
                 "Astro-RG","Astro3","Neurons2","RG2","Neurons3",
                 "Astro3","Neurons4","RG3","Neurons4","Neurons5",
                 "Mix","RG4","Endothelial","Neurons6","RG-Neurons2",
                 "Neurons7","Glia","RG5","Mix","Mix"
                 )


names(cluster.ids) <- levels(seu.q)
seu.q <- RenameIdents(seu.q, cluster.ids)
seu.q$Cluster.ids <- Idents(seu.q)

DimPlot(seu.q, reduction = "umap", label = TRUE, group.by = 'Cluster.ids', repel = TRUE)
DimPlot(seu.q, reduction = "umap", label = TRUE, group.by = 'Cluster.ids',split.by = 'orig.ident')

# some cluster are problematic 
# cluster 3 has 650 RG and 180 Neurons


Idents(seu.q) <- 'RNA_snn_res.1.8'

cluster.ids <- c("Astro","Neurons","RG","Astro",
                 "RG","Neurons","Neurons","Astro",
                 "Neurons","Astro","Astro","Neurons",
                 "RG","RG","Neurons","Neurons",
                 "Endothelial","Neurons")

cluster.ids <- c("RG","Neurons","Astro","Astro","Neurons",
                 "Astro-Mix","Neurons-RG","RG",
                 "Neurons",
                 "Endothelial")

# k.param 125
cluster.ids <- c("Astro","Neurons","Astro","Neurons",
                 "RG1-Neurons","Neurons","Astro3-Neurons-RG","RG",
                 "Neurons","Neurons","RG",
                 "Endothelial","Mix")
# K 25
cluster.ids <- c("Astro","Neurons","RG-Neur","Astro","Neurons",
                 "Astro-RG","Astro","Neurons","RG","Neurons",
                 "Astro","Neurons","RG","Neurons","Neurons",
                 "Mix","RG","Endothelial","Neurons","RG-Neur",
                 "Neurons","Glia","RG","Mix","Mix"
                 )

names(cluster.ids) <- levels(seu.q)
seu.q <- RenameIdents(seu.q, cluster.ids)
seu.q$Level1 <- Idents(seu.q)

DimPlot(seu.q, reduction = "umap", label = TRUE, group.by = 'Level1', repel = TRUE)
DimPlot(seu.q, reduction = "umap", label = TRUE, group.by = 'Level1',split.by = 'orig.ident')

Make a table of the proportion of cell types and a plot

cell.order
Error: object 'cell.order' not found

Make a proprotion table


library(stringr)
library(reshape)

# for original cell types 


df.r <- reshape(df, idvar = "Var2", timevar = "Var1", direction = "wide")
dat1 <- df.r
dat1[] <- lapply(dat1[], function(x){
  # Check if the column is numeric
  if (is.numeric(x)){
    return(x/sum(x)*100)
  } else{
    return(x)
  }
})
dat1
write.csv(dat1, paste(output_path,"proportionofCelltypesin4pops.csv"))

### for new main cell types 

df.r <- reshape(df.3, idvar = "Var2", timevar = "Var1", direction = "wide")

dat3 <- df.r
dat3[] <- lapply(dat3[], function(x){
  # Check if the column is numeric
  if (is.numeric(x)){
    return(x/sum(x)*100)
  } else{
    return(x)
  }
})
dat3


### with the subtypes of cells
df.r <- reshape(df.2, idvar = "Var2", timevar = "Var1", direction = "wide")

dat2 <- df.r
dat2[] <- lapply(dat2[], function(x){
  # Check if the column is numeric
  if (is.numeric(x)){
    return(x/sum(x)*100)
  } else{
    return(x)
  }
})
dat2

Process Kamath



seu <- NormalizeData(seu.r, normalization.method = "LogNormalize", scale.factor = 10000)
seu <- FindVariableFeatures(seu, selection.method = "vst", nfeatures = 2000)
seu <- ScaleData(seu)
seu <- RunPCA(seu)

saveRDS(seu,"/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/KamathTotal_downsample.RDS")

Re annotate the new clustered object

Get predictions: Use Kamath all cells down sampled (doesn’t contain Radial Glia) Developing Forebrain Organoids AIW002 120 days


# Kamath midbrain Postmortem sn

seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/KamathTotal_downsample.RDS")
#Idents(seu.r) <- "Cell_Type"
#seu.r <- subset(seu.r, idents = c("astro","da","nonda","endo"))

Idents(seu.r) <- "Cell_Subtype"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = seu.q, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$Cell_Subtype, k.weight = 50)
seu.q <- AddMetaData(seu.q, predictions$predicted.id, col.name = "mb.pred")
seu.q <- AddMetaData(seu.q, predictions$prediction.score.max, col.name = "prediction.score.max")

table(seu.q$mb.pred)


seu.q$mb.pred.thresh <- ifelse(seu.q$prediction.score.max > 0.7, seu.q$mb.pred, "none")

DimPlot(seu.q, group.by = 'mb.pred.thresh')
table(seu.q$mb.pred.thresh)


#***** subtype predictions don't work 
#but when I had the separate subytes they did work on neurons and astro separately. It could be there just aren't enough reference cells - I only have 1000 each main group.  

# I'm going to try with the main cell types groups instead

Idents(seu.r) <- "Cell_Type"
table(seu.r$Cell_Type)

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = seu.q, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$Cell_Type)
seu.q <- AddMetaData(seu.q, predictions$predicted.id, col.name = "mb.pred")
seu.q <- AddMetaData(seu.q, predictions$prediction.score.max, col.name = "prediction.score.max")

table(seu.q$mb.pred)


seu.q$mb.pred.thresh <- ifelse(seu.q$prediction.score.max > 0.7, seu.q$mb.pred, "none")


DimPlot(seu.q, group.by = 'mb.pred.thresh', label = TRUE)
table(seu.q$mb.pred.thresh)

# create the prediction top 2 cell types per cluster dataframe

# still useless

# best to use the subtype predictions from the separate objects after subsetting

Try the Bhaduri whole brain dataset


# midbrain and striatum

seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Bhaduri_midbrain_striatum.RDS")

Idents(seu.r) <- "cell_cluster"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = seu.q, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$cell_cluster)

seu.q <- AddMetaData(seu.q, predictions$predicted.id, col.name = "mbs.pred")
seu.q <- AddMetaData(seu.q, predictions$prediction.score.max, col.name = "prediction.score.max")

table(seu.q$mbs.pred)
seu.q$mbs.pred.thresh <- ifelse(seu.q$prediction.score.max > 0.7, seu.q$mbs.pred, "none")


DimPlot(seu.q, group.by = 'mbs.pred.thresh', label = TRUE)
table(seu.q$mb.pred.thresh)


# read in the reference dataset
# whole brain Bhaduri down sampled
seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Bhaduri_downsample.RDS")

Idents(seu.r) <- "cell_cluster"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = seu.q, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$cell_cluster)
seu.q <- AddMetaData(seu.q, predictions$predicted.id, col.name = "brain.pred")
seu.q <- AddMetaData(seu.q, predictions$prediction.score.max, col.name = "prediction.score.max")

table(seu.q$brain.pred)
seu.q$brain.pred.thresh <- ifelse(seu.q$prediction.score.max > 0.7, seu.q$brain.pred, "none")


DimPlot(seu.q, group.by = 'brain.pred.thresh', label = TRUE)
DimPlot(seu.q, group.by = "brain.pred")
table(seu.q$brain.pred.thresh)

Label transfer with the developing forbrain


seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Karolinski_DevForebrain_downsample_Level1.RDS")
colnames(seu.r@meta.data)
DefaultAssay(seu.r) <- 'RNA'

# clusters has subgroups
# levels are main cell groups 
Idents(seu.r) <- "Level1"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = seu.q, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$Level1)
seu.q <- AddMetaData(seu.q, predictions$predicted.id, col.name = "dfb.pred")
seu.q <- AddMetaData(seu.q, predictions$prediction.score.max, col.name = "prediction.score.max")

table(seu.q$dfb.pred)
seu.q$dfb.pred.thresh <- ifelse(seu.q$prediction.score.max > 0.85, seu.q$dfb.pred, "none")

table(seu.q$dfb.pred.thresh)
DimPlot(seu.q, group.by = 'dfb.pred.thresh', label = FALSE)
DimPlot(seu.q, group.by = "dfb.pred")
DimPlot(seu.q, group.by = 'orig.ident', split.by = 'dfb.pred.thresh')
DimPlot(seu.q, split.by = 'orig.ident', group.by = 'dfb.pred.thresh')

AIW002 120 days predictions


seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/AIWtrio120days/MOintegratedClusterK123res0.8.names_nov16_2021")

### maybe the knockouts are causing a problem
Idents(seu.r) <- 'orig.ident'
seu.r <- subset(seu.r, idents = )

Idents(seu.r) <- "res08names"
DefaultAssay(seu.r) <- "RNA"

anchors <- FindTransferAnchors(reference = seu.r ,query = seu.q, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$res08names)

seu.q <- AddMetaData(seu.q, predictions$predicted.id, col.name = "hmo.pred")
seu.q <- AddMetaData(seu.q, predictions$prediction.score.max, col.name = "prediction.score.max")

table(seu.q$hmo.pred)
seu.q$hmo.pred.thresh <- ifelse(seu.q$prediction.score.max > 0.85, seu.q$hmo.pred, "none")

table(seu.q$hmo.pred.thresh)
DimPlot(seu.q, group.by = 'hmo.pred.thresh', label = FALSE)
DimPlot(seu.q, group.by = "hmo.pred")
DimPlot(seu.q, group.by = 'orig.ident', split.by = 'hmo.pred.thresh')
DimPlot(seu.q, split.by = 'orig.ident', group.by = 'hmo.pred.thresh')

Make a summary table of predictions



# AIW002 120 days predictions - take the thresholded options
t.lables <- as.data.frame(table(seu.q$RNA_snn_res.1.8, seu.q$hmo.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 
top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

Try the 60 days organoids AIW


seu.r <-readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/AIWtrio60days/AWI002ParkinKOPinkKO60days_labels_14052022.rds")

Idents(seu.r) <- "cluster.ids"
DefaultAssay(seu.r) <- "RNA"

anchors <- FindTransferAnchors(reference = seu.r ,query = seu.q, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$cluster.ids)

seu.q <- AddMetaData(seu.q, predictions$predicted.id, col.name = "hmo60.pred")
seu.q <- AddMetaData(seu.q, predictions$prediction.score.max, col.name = "prediction.score.max")

table(seu.q$hmo60.pred)
seu.q$hmo60.pred.thresh <- ifelse(seu.q$prediction.score.max > 0.85, seu.q$hmo60.pred, "none")

table(seu.q$hmo60.pred.thresh)
DimPlot(seu.q, group.by = 'hmo60.pred.thresh', label = FALSE)
DimPlot(seu.q, group.by = "hmo60.pred")
DimPlot(seu.q, group.by = 'orig.ident', split.by = 'hmo60.pred.thresh')
DimPlot(seu.q, split.by = 'orig.ident', group.by = 'hmo60.pred.thresh')

Make predictions from 60 days

# AIW002 120 days predictions - take the thresholded options
t.lables <- as.data.frame(table(seu.q$RNA_snn_res.1.8, seu.q$hmo60.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 
top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

Look at the expression of gene lists


Idents(seu.q) <- 'RNA_snn_res.1.8'

feature_list = c("MKI67","SOX2","POU5F1","DLX2","PAX6","SOX9","HES1","NES","RBFOX3","MAP2","NCAM1","CD24","GRIA2","GRIN2B","GABBR1","GAD1","GAD2","GABRA1","GABRB2","TH","ALDH1A1","LMX1B","NR4A2","CORIN","CALB1","KCNJ6","CXCR4","ITGA6","SLC1A3","CD44","AQP4","S100B", "PDGFRA","OLIG2","MBP","CLDN11","VIM","VCAM1")

#DoHeatmap(seu.q, features = feature_list, size=3, angle =90, group.bar.height = 0.02)
DotPlot(seu.q, features = feature_list) +RotatedAxis()

PD_poulin = c("TH","SLC6A3","SLC18A2","SOX6","NDNF","SNCG","ALDH1A1","CALB1","TACR2","SLC17A6","SLC32A1","OTX2","GRP","LPL","CCK","VIP")

#DoHeatmap(seu.q, features = PD_poulin, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
DotPlot(seu.q, features = PD_poulin)+RotatedAxis()

ealryNeur = c("DCX","NEUROD1","TBR1")
proliferation = c("PCNA","MKI67")
neuralstem = c("SOX2","NES","PAX6","MASH1")

feature_list <- c("DCX","NEUROD1","TBR1","PCNA","MKI67","SOX2","NES","PAX6","MASH1")
#DoHeatmap(seu.q, features = feature_list, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
DotPlot(seu.q, features = feature_list)+RotatedAxis()
# no proliferation marker expression  PCNA or MKI67
# cluster 4 DA neurons - shows early neuron marker and low PAX 4
# cluster 3 has higher SOX2 - neuroblast marker / NPC marker

mat_neuron = c("RBFOX3","SYP","DLG45","VAMP1","VAMP2","TUBB3","SYT1","BSN","HOMER1","SLC17A6") 
# NeuN is FOX3 - RBFOX3
# PSD95 also SP-90 or DLG4
# VGLUT2 is SLC17A6
#DoHeatmap(seu.q, features = mat_neuron, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
# cluster 4 also show mature neuron markers
DotPlot(seu.q, features = mat_neuron)+RotatedAxis()
# excitatory neuron markers
ex = c("GRIA2","GRIA1","GRIA4","GRIN1","GRIN2B","GRIN2A","GRIN3A","GRIN3","GRIP1","CAMK2A")
#DoHeatmap(seu.q, features = ex, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
DotPlot(seu.q, features = ex)+RotatedAxis()
# inhibitory neuron markers
inh = c("GAD1","GAD2", "GAT1","PVALB","GABR2","GABR1","GBRR1","GABRB2","GABRB1","GABRB3","GABRA6","GABRA1","GABRA4","TRAK2")
#DoHeatmap(seu.q, features = inh, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
DotPlot(seu.q, features = inh)+RotatedAxis()
# cluster 4 is more excitatory than inhbitory but neither marker set has much expression 

### glia markers
microglia = c("PTPRC","AIF1","ADGRE1")  # ADGRE1 is a microglia marker F4/80, CD45 is PTPRC, gene name IBA1 is AIF1
astolgNPCpromicro = c("GFAP","S100B","SLC1A2","MBP","SOX10","SPP1","DCX","NEUROD1","TBR1","PCNA","MKI67","PTPRC","AIF1","ADGRE1")
# note GLT1 is EAAT2 which is SLC1A2 glutatmate transporter
# epithelial
epi = c("HES1","HES5","SOX2","SOX10","NES","CDH1","NOTCH1") # e-cadherin is CDH1

#DoHeatmap(seu.q, features = astolgNPCpromicro, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
DotPlot(seu.q, features = astolgNPCpromicro)+RotatedAxis()
# cluster 4 is more excitatory than inhbitory but neither marker set has much expression 
#DoHeatmap(seu.q, features = epi, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
DotPlot(seu.q, features = epi)+RotatedAxis()

# also add Radial glia marker overlap with Glia and Neurons

features <- c("PTPRC","AIF1","ADGRE1", "VIM", "TNC","PTPRZ1","FAM107A","HOPX","LIFR",
              "ITGB5","IL6ST")
#DoHeatmap(seu.q, features = features, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
DotPlot(seu.q, features = features)+RotatedAxis()

Rename cell types


Idents(seu.q) <- 'RNA_snn_res.1.8'

cluster.ids <- c("Astro-RG-Pre","Neurons1-im","RG1-NPC","Astro1","Neurons2-im",
                 "Astro-NPC","Astro","Neurons3","RG2","Neurons4",
                 "Astro3","Neurons5","RG3-NPC","Neurons6-DA","Neurons7-NPC",
                 "Mix-RG4","RG5","Endothelial-NPC","Neurons8-inh-max","Neurons9-DA",
                 "Neurons10-DA","RG6","RG7-epi","NPC-Astro","RG-OPC"
                 )


names(cluster.ids) <- levels(seu.q)
seu.q <- RenameIdents(seu.q, cluster.ids)
seu.q$Level2 <- Idents(seu.q)

DimPlot(seu.q, group.by = 'Level2', label = TRUE)
DimPlot(seu.q, group.by = 'Level2', label = TRUE, split.by = 'orig.ident')
DimPlot(seu.q, group.by =  'orig.ident')

# name the major groups together and see how it matches up with space

cluster.ids <- c("Astro1","Neurons1","RG1","Astro2","Neurons2",
                 "Astro3","Astro4","Neurons3","RG2","Neurons4",
                 "Astro5","Neurons5","RG3-NPC","DANeurons1","Neurons6",
                 "Mix","RG4","Endothelial-NPC","Neurons8-inh-max","DANeurons2",
                 "DANeurons3","RG5","RG6-epi","RG7","RG-OPC"
                 )


names(cluster.ids) <- levels(seu.q)
seu.q <- RenameIdents(seu.q, cluster.ids)
seu.q$Level3 <- Idents(seu.q)

DimPlot(seu.q, group.by = 'Level3', label = TRUE, repel = TRUE)
DimPlot(seu.q, group.by = 'Level3', label = TRUE, split.by = 'orig.ident')
DimPlot(seu.q, group.by =  'orig.ident')

Idents(seu.q) <- 'RNA_snn_res.1.8'

cluster.ids <- c("Astro","Neurons","RG","Astro","Neurons",
                 "Astro","Astro","Neurons","RG","Neurons",
                 "Astro","Neurons","RG","DANeurons","Neurons",
                 "Mix","RG","Endothelial","Neurons","DANeurons",
                 "DANeurons","RG","RG","RG","RG"
                 )


names(cluster.ids) <- levels(seu.q)
seu.q <- RenameIdents(seu.q, cluster.ids)
seu.q$Levels <- Idents(seu.q)

DimPlot(seu.q, group.by = 'Levels', label = TRUE, repel = TRUE)
DimPlot(seu.q, group.by = 'Levels', label = TRUE, split.by = 'orig.ident')
DimPlot(seu.q, group.by =  'orig.ident')

See how the labels fit with sorted cell types


t.lables <- as.data.frame(table(seu.q$orig.ident, seu.q$Level3))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

#Not a bad breakdown mix
t.lables <- as.data.frame(table(seu.q$orig.ident, seu.q$Levels))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

Make the cell type proportion plots - make the input colours should be different than cell type colours Cell type Use colours from other figures if possible: Astrocytes = orange Orange Radial Glia = Pink Neurons = Purple Endothelial bright blue

I’ll make a UMAP with the input colours - match to 2D -

Find Cluster markers with all clusters:


Idents(seu.q) <- 'Level3'

ClusterMarkers <- FindAllMarkers(seu.q)

top3 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=3, wt = avg_log2FC)
DoHeatmap(seu.q, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)

write.csv(output_path,"ClusterMarkersLevel3all.csv")

Same cell type markers are overlapping


# error in dot plot because of repeat gene
marker.top3 <- unique(top3$gene)
DotPlot(seu.q, features = marker.top3) + RotatedAxis()

# RG-NPC is similar to mix and DAneurons2

Not all astros overlap with astro markers and not all neurons overlap neurons The RG overlap with all kinds of cells.

Subset out populations for some label transfers from the public data.

Subset out Neurons


# subset neurons
# Level2
cluster.ids <- c("Astro-RG-Pre","Neurons1-im","RG1-NPC","Astro1","Neurons2-im",
                 "Astro-NPC","Astro","Neurons3","RG2","Neurons4",
                 "Astro3","Neurons5","RG3-NPC","Neurons6-DA","Neurons7-NPC",
                 "Mix-RG4","RG5","Endothelial-NPC","Neurons8-inh-max","Neurons9-DA",
                 "Neurons10-DA","RG6","RG7-epi","NPC-Astro","RG-OPC"
                 )
# Level 3
cluster.ids <- c("Astro1","Neurons1","RG1","Astro2","Neurons2",
                 "Astro3","Astro4","Neurons3","RG2","Neurons4",
                 "Astro5","Neurons5","RG3-NPC","DANeurons1","Neurons6",
                 "Mix","RG4","Endothelial-NPC","Neurons8-inh-max","DANeurons2",
                 "DANeurons3","RG5","RG6-epi","RG7","RG-OPC"
                 )

Idents(seu.q) <- 'Level3'
neuron.id <- c("Neurons1","Neurons2","Neurons3","Neurons4",
                 "Neurons5","DANeurons1","Neurons6",
                 "Mix","Neurons8-inh-max","DANeurons2",
                 "DANeurons3")
# without mix
neuron.id <- c("Neurons1","Neurons2","Neurons3","Neurons4",
                 "Neurons5","DANeurons1","Neurons6",
                 "Neurons8-inh-max","DANeurons2",
                 "DANeurons3")

neurons.sub <- subset(seu.q, idents = neuron.id)

table(neurons.sub$Level3)

DimPlot(neurons.sub, label = TRUE)

Find Cluster markers to distinguish Neuron subgroups


table(neurons.sub$Level3)
Idents(neurons.sub) <- 'Level3'

ClusterMarkers <- FindAllMarkers(neurons.sub, only.pos = TRUE)

top3 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=3, wt = avg_log2FC)
DoHeatmap(neurons.sub, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)

marker.top3 <- unique(top3$gene)
DotPlot(neurons.sub, features = marker.top3) + RotatedAxis()

write.csv(ClusterMarkers, paste(output_path,"ClusterMarkersLevel3NeuronSubnoMix.csv", sep = ""))

Neurons 1 has overlapping markers with DAneurons2 Neurons 2, Neurons 4, Neurons 6 are very similar in the top markers - these are all in the Neurons1 FACS pop And the top markers are mito genes.

Look at the DA marker genes and see if there are differences there Also some neuronal markers

DA neurons 1 has the most different DA markers (TH, CALB1, SLC17A6, OTX2) - highest CALB1 DA neurons 2 has most cells and highest level of TH expression, most cells expressing SOX2 at a low levels DA neurons 3 SLC17A6, OTX2, OTX2 highest

Get markers for just DA neurons


Idents(neurons.sub) <- 'Level3'
DA.sub <- subset(neurons.sub, idents = c("DANeurons1","DANeurons2","DANeurons3"))

ClusterMarkers.DA <- FindAllMarkers(DA.sub, only.pos = TRUE)

top3 <- ClusterMarkers.DA %>% group_by(cluster) %>% top_n(n=3, wt = avg_log2FC)
DoHeatmap(DA.sub, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)

marker.top3 <- unique(top3$gene)
DotPlot(neurons.sub, features = marker.top3) + RotatedAxis()
DotPlot(DA.sub, features = marker.top3) + RotatedAxis()

write.csv(ClusterMarkers, paste(output_path,"ClusterMarkersDANeurons.csv", sep = ""))

Good markers DA1 - RAB3B DA2 - TPBG or HES1 - TPBG is proposed as a DA marker (HES1 midbrain patterning) DA3 - TPH1 - sertononergic neurons or TTR oxidative stress protective

Compare the other neurons and find markers

DoHeatmap(neur.sub, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)

marker.top3 <- unique(top3$gene)
DotPlot(neurons.sub, features = marker.top3) + RotatedAxis()

DotPlot(neur.sub, features = marker.top3) + RotatedAxis()


write.csv(ClusterMarkers.neur, paste(output_path,"ClusterMarkersotherNeurons.csv", sep = ""))

Have a look at some markers in feature plots


DimPlot(neur.sub)

FeaturePlot(neur.sub, features = c("RUNX1T1", "ASCL1","GAD1","GRIN2A","GRIA2","VAMP2"))



mat_neuron = c("RBFOX3","SYP","DLG45","VAMP1","VAMP2","TUBB3","SYT1","BSN","HOMER1","SLC17A6") 
# NeuN is FOX3 - RBFOX3
# PSD95 also SP-90 or DLG4
# VGLUT2 is SLC17A6
#DoHeatmap(seu.q, features = mat_neuron, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
# cluster 4 also show mature neuron markers
DotPlot(neur.sub, features = mat_neuron)+RotatedAxis()
Warning in FetchData.Seurat(object = object, vars = features, cells = cells) :
  The following requested variables were not found: DLG45

# excitatory neuron markers
ex = c("GRIA2","GRIA1","GRIA4","GRIN1","GRIN2B","GRIN2A","GRIN3A","GRIN3","GRIP1","CAMK2A")
#DoHeatmap(seu.q, features = ex, size=3, angle =90, group.bar.height = 0.02, group.by = 'RNA_snn_res.0.6')
DotPlot(neur.sub, features = ex)+RotatedAxis()
Warning in FetchData.Seurat(object = object, vars = features, cells = cells) :
  The following requested variables were not found: GRIN3

# inhibitory neuron markers
inh = c("GAD1","GAD2", "GAT1","PVALB","GABR2","GABR1","GBRR1","GABRB2","GABRB1","GABRB3","GABRA6","GABRA1","GABRA4","TRAK2")

DotPlot(neur.sub, features = inh) + RotatedAxis()
Warning in FetchData.Seurat(object = object, vars = features, cells = cells) :
  The following requested variables were not found: GAT1, GABR2, GABR1, GBRR1

I’ll separate out Neurons 2,4,6


Idents(neurons.sub) <- 'Level3'
neurons1.sub <- subset(neurons.sub, idents = c("Neurons2","Neurons4","Neurons6"))

ClusterMarkers.n1 <- FindAllMarkers(neurons1.sub, only.pos = TRUE)
Calculating cluster Neurons2

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 2 % ~01s          
  |++                                                | 3 % ~01s          
  |+++                                               | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 6 % ~01s          
  |++++                                              | 7 % ~01s          
  |+++++                                             | 9 % ~01s          
  |+++++                                             | 10% ~01s          
  |++++++                                            | 11% ~01s          
  |++++++                                            | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |+++++++                                           | 14% ~01s          
  |++++++++                                          | 15% ~01s          
  |++++++++                                          | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 18% ~01s          
  |++++++++++                                        | 19% ~01s          
  |+++++++++++                                       | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 24% ~01s          
  |+++++++++++++                                     | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |++++++++++++++                                    | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |+++++++++++++++                                   | 30% ~01s          
  |++++++++++++++++                                  | 31% ~01s          
  |++++++++++++++++                                  | 32% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |+++++++++++++++++++                               | 36% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 39% ~01s          
  |+++++++++++++++++++++                             | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |++++++++++++++++++++++                            | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |+++++++++++++++++++++++                           | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Calculating cluster Neurons4

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 3 % ~01s          
  |++                                                | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 6 % ~01s          
  |++++                                              | 8 % ~00s          
  |+++++                                             | 9 % ~00s          
  |++++++                                            | 10% ~00s          
  |++++++                                            | 12% ~00s          
  |+++++++                                           | 13% ~00s          
  |++++++++                                          | 14% ~00s          
  |++++++++                                          | 16% ~00s          
  |+++++++++                                         | 17% ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++                                        | 19% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++                                     | 26% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |+++++++++++++++++                                 | 32% ~00s          
  |+++++++++++++++++                                 | 34% ~00s          
  |++++++++++++++++++                                | 35% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |++++++++++++++++++++                              | 39% ~00s          
  |+++++++++++++++++++++                             | 40% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |+++++++++++++++++++++++++                         | 48% ~00s          
  |+++++++++++++++++++++++++                         | 49% ~00s          
  |++++++++++++++++++++++++++                        | 51% ~00s          
  |++++++++++++++++++++++++++                        | 52% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++                   | 61% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |++++++++++++++++++++++++++++++++++                | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Calculating cluster Neurons6

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 2 % ~01s          
  |++                                                | 3 % ~01s          
  |+++                                               | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 6 % ~01s          
  |++++                                              | 8 % ~01s          
  |+++++                                             | 9 % ~01s          
  |+++++                                             | 10% ~01s          
  |++++++                                            | 11% ~01s          
  |++++++                                            | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |+++++++                                           | 14% ~01s          
  |++++++++                                          | 15% ~01s          
  |+++++++++                                         | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 18% ~01s          
  |++++++++++                                        | 19% ~01s          
  |+++++++++++                                       | 20% ~01s          
  |+++++++++++                                       | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |++++++++++++                                      | 24% ~01s          
  |+++++++++++++                                     | 25% ~01s          
  |+++++++++++++                                     | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |++++++++++++++                                    | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |++++++++++++++++                                  | 30% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |+++++++++++++++++                                 | 32% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |++++++++++++++++++                                | 34% ~00s          
  |++++++++++++++++++                                | 35% ~00s          
  |+++++++++++++++++++                               | 37% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |++++++++++++++++++++                              | 39% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++                             | 41% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |+++++++++++++++++++++++++                         | 48% ~00s          
  |+++++++++++++++++++++++++                         | 49% ~00s          
  |++++++++++++++++++++++++++                        | 51% ~00s          
  |++++++++++++++++++++++++++                        | 52% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |+++++++++++++++++++++++++++++++                   | 60% ~00s          
  |+++++++++++++++++++++++++++++++                   | 61% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++                | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
top3 <- ClusterMarkers.n1 %>% group_by(cluster) %>% top_n(n=3, wt = avg_log2FC)
DoHeatmap(neurons1.sub, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)


marker.top3 <- unique(top3$gene)
DotPlot(neurons1.sub, features = marker.top3) + RotatedAxis()
Warning: Scaling data with a low number of groups may produce misleading results

DotPlot(DA.sub, features = marker.top3) + RotatedAxis()
Error in UseMethod(generic = "DefaultAssay", object = object) : 
  no applicable method for 'DefaultAssay' applied to an object of class "character"

Idents(neur.sub) <- 'Level3'
neurons2.sub <- subset(neur.sub, idents = c("Neurons2","Neurons4","Neurons6"), invert = TRUE)

ClusterMarkers.n2 <- FindAllMarkers(neurons2.sub, only.pos = TRUE)
Calculating cluster Neurons1

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 3 % ~01s          
  |+++                                               | 4 % ~01s          
  |+++                                               | 6 % ~01s          
  |++++                                              | 7 % ~01s          
  |+++++                                             | 9 % ~01s          
  |++++++                                            | 10% ~01s          
  |++++++                                            | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |++++++++                                          | 15% ~01s          
  |+++++++++                                         | 16% ~01s          
  |+++++++++                                         | 18% ~01s          
  |++++++++++                                        | 19% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 22% ~01s          
  |++++++++++++                                      | 24% ~01s          
  |+++++++++++++                                     | 25% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |+++++++++++++++                                   | 28% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |++++++++++++++++++                                | 34% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |+++++++++++++++++++                               | 37% ~00s          
  |++++++++++++++++++++                              | 39% ~00s          
  |+++++++++++++++++++++                             | 40% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |++++++++++++++++++++++++                          | 48% ~00s          
  |+++++++++++++++++++++++++                         | 49% ~00s          
  |++++++++++++++++++++++++++                        | 51% ~00s          
  |+++++++++++++++++++++++++++                       | 52% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++                   | 61% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Calculating cluster Neurons3

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 2 % ~01s          
  |++                                                | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 6 % ~01s          
  |++++                                              | 7 % ~01s          
  |+++++                                             | 9 % ~01s          
  |+++++                                             | 10% ~01s          
  |++++++                                            | 11% ~01s          
  |+++++++                                           | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |++++++++                                          | 15% ~01s          
  |++++++++                                          | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 18% ~01s          
  |++++++++++                                        | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |+++++++++++                                       | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 24% ~01s          
  |+++++++++++++                                     | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |+++++++++++++++                                   | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |++++++++++++++++                                  | 30% ~01s          
  |++++++++++++++++                                  | 32% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |+++++++++++++++++++                               | 38% ~01s          
  |++++++++++++++++++++                              | 39% ~01s          
  |+++++++++++++++++++++                             | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |++++++++++++++++++++++                            | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Calculating cluster Neurons5

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 2 % ~01s          
  |++                                                | 3 % ~01s          
  |+++                                               | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 6 % ~01s          
  |++++                                              | 7 % ~01s          
  |+++++                                             | 9 % ~01s          
  |+++++                                             | 10% ~01s          
  |++++++                                            | 11% ~01s          
  |++++++                                            | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |+++++++                                           | 14% ~01s          
  |++++++++                                          | 15% ~01s          
  |++++++++                                          | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 18% ~01s          
  |++++++++++                                        | 19% ~01s          
  |+++++++++++                                       | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 24% ~01s          
  |+++++++++++++                                     | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |++++++++++++++                                    | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |+++++++++++++++                                   | 30% ~01s          
  |++++++++++++++++                                  | 31% ~01s          
  |++++++++++++++++                                  | 32% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |+++++++++++++++++++                               | 36% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 39% ~01s          
  |+++++++++++++++++++++                             | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |++++++++++++++++++++++                            | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |+++++++++++++++++++++++                           | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++                   | 61% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Calculating cluster Neurons8-inh-max

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 2 % ~02s          
  |++                                                | 3 % ~02s          
  |+++                                               | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 6 % ~01s          
  |++++                                              | 7 % ~01s          
  |+++++                                             | 9 % ~01s          
  |+++++                                             | 10% ~01s          
  |++++++                                            | 11% ~01s          
  |++++++                                            | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |+++++++                                           | 14% ~01s          
  |++++++++                                          | 15% ~01s          
  |++++++++                                          | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 18% ~01s          
  |++++++++++                                        | 19% ~01s          
  |+++++++++++                                       | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 24% ~01s          
  |+++++++++++++                                     | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |++++++++++++++                                    | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |+++++++++++++++                                   | 30% ~01s          
  |++++++++++++++++                                  | 31% ~01s          
  |++++++++++++++++                                  | 32% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |+++++++++++++++++++                               | 36% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 39% ~01s          
  |+++++++++++++++++++++                             | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |++++++++++++++++++++++                            | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |+++++++++++++++++++++++                           | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  
top3 <- ClusterMarkers.n2 %>% group_by(cluster) %>% top_n(n=3, wt = avg_log2FC)
DoHeatmap(neurons2.sub, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)


marker.top3 <- unique(top3$gene)
DotPlot(neurons2.sub, features = marker.top3) + RotatedAxis()
Warning: Scaling data with a low number of groups may produce misleading results

write.csv(ClusterMarkers.n2, paste(output_path,"ClusterMarkersNeurons1358.csv", sep = ""))

Look at the GO terms when separating out the neuron subtypes


group = "Neurons3"

#for(group in group.list){
print(group)
[1] "Neurons3"
Up.list <- ClusterMarkers.n2 %>% filter(cluster == group & avg_log2FC > 0)
genes <- Up.list$gene

Er <- enrichr(genes, databases = db)
Uploading data to Enrichr... Done.
  Querying GO_Cellular_Component_2015... Done.
  Querying GO_Biological_Process_2015... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.
print(plotEnrich(Er[[1]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

print(plotEnrich(Er[[2]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

print(plotEnrich(Er[[3]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

print(plotEnrich(Er[[4]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))


t.GOcell <- Er[[1]] %>% select(Term, Genes, Combined.Score)
print(t.GOcell)

t.GObio <- Er[[2]] %>% select(Term, Genes, Combined.Score)
print(t.GObio)

t.CellMarker <- Er[[3]] %>% select(Term, Genes, Combined.Score)
print(t.CellMarker)


t.Azi <- Er[[4]] %>% select(Term, Genes, Combined.Score)
print(t.Azi)
#}

Compare the neurons1 groups to the neurons2 groups

Check the GO terms and celltype libraries for the two groups of neurons

down.list <- ClusterMarkers %>% filter(avg_log2FC < 0)
genes <- rownames(down.list)

Er <- enrichr(genes, databases = db)
Uploading data to Enrichr... Done.
  Querying GO_Cellular_Component_2015... Done.
  Querying GO_Biological_Process_2015... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.
print(plotEnrich(Er[[1]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

print(plotEnrich(Er[[2]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

print(plotEnrich(Er[[3]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

print(plotEnrich(Er[[4]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))


t.GOcell <- Er[[1]] %>% select(Term, Genes, Combined.Score)
print(t.GOcell)
t.GObio <- Er[[2]] %>% select(Term, Genes, Combined.Score)
print(t.GObio)
t.CellMarker <- Er[[3]] %>% select(Term, Genes, Combined.Score)
print(t.CellMarker)
t.Azi <- Er[[4]] %>% select(Term, Genes, Combined.Score)
print(t.Azi)

Compare directly Neurons 1 (low CD24) with Neurons 2 (high CD24) For DEG and cell type predictions

seu <- neurons.1.2
seu <- NormalizeData(seu, normalization.method = "LogNormalize", scale.factor = 10000)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
seu <- FindVariableFeatures(seu, selection.method = "vst", nfeatures = 2000)
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
seu <- ScaleData(seu)
Centering and scaling data matrix

  |                                                                                                  
  |                                                                                            |   0%
  |                                                                                                  
  |==============================================                                              |  50%
  |                                                                                                  
  |============================================================================================| 100%
seu.q <- RunPCA(seu)
PC_ 1 
Positive:  DLK1, CLU, SPARCL1, VIM, PTGDS, GNG11, FTL, TFPI2, APOE, WIF1 
       S100A10, IFITM2, HPD, IGFBP5, GDF10, CP, ID3, SLCO1C1, CYP1B1, MGST1 
       PAPPA2, NUPR1, ANXA1, SCRG1, PON2, S100A6, PTN, MT-ND2, RBP4, TTYH1 
Negative:  CELF4, CHGB, SOX4, ANK3, CACNA2D1, PCLO, INA, PCDH9, SYT1, SSTR2 
       STMN2, STMN1, OCIAD2, TENM3, KLC1, GRIA2, AMER2, DYNC1I1, STMN4, DCX 
       ZFHX4, NRXN1, NEUROD1, ATCAY, NCKAP5, TERF2IP, PTPRR, MARCH1, EOMES, NREP 
PC_ 2 
Positive:  ASCL1, TMSB4X, CD24, TPBG, RUNX1T1, PAX6, CMIP, CCNG2, FOS, EGR1 
       DDC, CDH7, PTMA, GPHN, ZIC2, KCNQ1OT1, EFNB2, TEAD1, CADM2, ZIC1 
       CHD7, DSP, CDKN1C, JUNB, HES6, ZNF385D, STXBP5L, RNASEH2B, SOX4, PLCG2 
Negative:  MT-CO1, MT-ATP6, MT-CO2, MT-CYB, MT-CO3, MT-ND2, MT-ND3, MT-ND4, MT-ND1, MT-ND5 
       MALAT1, MT-ND4L, MT-ND6, PLPPR4, NEUROD1, IMPG2, PCAT4, PTPRR, SST, FAM19A4 
       AANAT, BCAT1, GSG1, TPH1, SGIP1, OLFM3, TTR, RBFOX1, BTBD8, TRIM9 
PC_ 3 
Positive:  PCAT4, TPH1, IMPG2, NCKAP5, FAM19A4, PLPPR4, BTBD8, GSG1, BCAT1, GNB3 
       NEUROD1, SST, AANAT, GK5, RBFOX1, CLSTN2, LHX4, ANKRD33B, CRABP2, ETV3L 
       TRIM9, AIPL1, CHRM3, AC004852.2, PRKG2, TMSB4X, NTM, OLFM3, SLC1A2, AP000459.1 
Negative:  MT-ATP6, MT-CO2, MT-CO1, MT-ND3, MT-CO3, MT-CYB, MT-ND4, MT-ND2, MT-ND1, MT-ND5 
       EOMES, RASGRP1, MGAT4C, RAB3B, ELAVL3, ELAVL4, MT-ND4L, TSHZ2, SCN9A, ATP8A2 
       LHX1, PTPRO, SLIT1, MALAT1, ADCYAP1, RGS4, KRT222, SLC16A12, BDNF, GRIA1 
PC_ 4 
Positive:  TFPI2, LY6H, PEG10, SCG2, RASGRP1, S100A10, EOMES, TSHZ2, DNER, VIM 
       ELAVL4, RFX4, PHLDA1, ANXA1, DYNC1I1, MGAT4C, SLC16A12, PPP1R14C, ATP8A2, PTPRO 
       PTPRZ1, ID4, MGST1, GNG11, CLU, CHGB, ACSL4, NTRK2, KRT222, STMN2 
Negative:  MT-CYB, MT-ATP6, MT-ND2, MT-CO1, MT-CO3, MT-CO2, MT-ND3, MT-ND4, MT-ND1, MT-ND5 
       DDC, AFF2, CDHR1, PROM1, MT-ND4L, MALAT1, PPP1R1B, THSD7A, RUNX1T1, CBLN2 
       RNASEH2B, MT-ND6, PTGDS, PCDH17, PROX1, CDKN1C, ADRA2C, CDH7, ASCL1, DSP 
PC_ 5 
Positive:  SLC17A6, SOX4, CHGB, TMSB4X, GK5, EOMES, CELF4, PTMA, HES6, KHDRBS2 
       TOX3, STMN1, NEUROD2, PRDM8, BHLHE22, NEUROD1, NREP, PTPRO, CACNA2D1, MGP 
       FABP7, CADPS, EGR1, DYNC1I1, TPBG, ADCYAP1, CYP1B1, INSM1, SEMA3A, NPS 
Negative:  PTN, TFPI2, S100A10, DLK1, LY6H, PON2, VIM, GNG11, MGST1, CLU 
       TTYH1, SCG2, IFI27, ITM2C, ANXA1, RFX4, SPARCL1, SERPINI1, FTL, FGFBP1 
       ITPR2, GALNT1, APOE, NTRK2, PEG10, COL1A1, SCRG1, GRIN2A, PGA5, SLC2A1 
DimPlot(seu.q)


Idents(seu.q) <- 'Level3'

cluster.ids <- c("Neurons-CD24","Neurons","Neurons-CD24","Neurons",
                 "Neurons-CD24","DAN",
                 "Neurons","Neurons-CD24","DAN","DAN"
                 )

names(cluster.ids) <- levels(seu.q)
seu.q <- RenameIdents(seu.q, cluster.ids)
seu.q$NeuronGroups <- Idents(seu.q)
DimPlot(seu.q, group.by = 'Level3', split.by = 'orig.ident')

DimPlot(seu.q, group.by = 'NeuronGroups', split.by = 'orig.ident')

See the predicted markers

Double check and rename the two neuron populations


FeaturePlot(neurons.sub, features = c("CD24","NCAM1", "MAP2", "TUBB3"), split.by = "orig.ident")
Warning in FeaturePlot(neurons.sub, features = c("CD24", "NCAM1", "MAP2",  :
  All cells have the same value (0) of TUBB3.

Look at cell marker libraries and GO terms in all neurons contrasts


library(enrichR)

setEnrichrSite("Enrichr") # Human genes
# list of all the databases

# libaries with cell types
dbs <- listEnrichrDbs()
dbs
db <- c('GO_Cellular_Component_2015','GO_Biological_Process_2015',
        'CellMarker_Augmented_2021','Azimuth_Cell_Types_2021')

# enrichr(genes, databases = NULL)

group.list <- as.character(unique(ClusterMarkers$cluster))

# try to run a loop 
# the loop runs but it's hard to tell the output 
# need to run one at a time
[1] "Neurons1"         "Neurons2"         "Neurons3"         "Neurons4"         "Neurons5"        
 [6] "DANeurons1"       "Neurons6"         "Mix"              "Neurons8-inh-max" "DANeurons2"      
[11] "DANeurons3" 


group.list = "DANeurons3"

for(group in group.list){
print(group)
Up.list <- ClusterMarkers %>% filter(cluster == group & avg_log2FC > 0)
genes <- Up.list$gene

Er <- enrichr(genes, databases = db)
print(plotEnrich(Er[[1]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))
print(plotEnrich(Er[[2]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))
print(plotEnrich(Er[[3]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))
print(plotEnrich(Er[[4]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

t.GOcell <- Er[[1]] %>% select(Term, Genes, Combined.Score)
print(t.GOcell)

t.GObio <- Er[[2]] %>% select(Term, Genes, Combined.Score)
print(t.GObio)

t.CellMarker <- Er[[3]] %>% select(Term, Genes, Combined.Score)
print(t.CellMarker)


t.Azi <- Er[[4]] %>% select(Term, Genes, Combined.Score)
print(t.Azi)
}

Label transfer Kamath DA neurons in Neurons Subset (has both DA neurons and Others as predicted by AIW002 label transfers)



seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/Macosko_Data/DAsubgroups_processed.Rds")

Idents(seu.r) <- "Cell_Subtype"
Idents(neurons.sub) <- "Level3"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = neurons.sub, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$Cell_Subtype, k.weight = 30)
neurons.sub <- AddMetaData(neurons.sub, predictions$predicted.id, col.name = "da.pred")
neurons.sub <- AddMetaData(neurons.sub, predictions$prediction.score.max, col.name = "prediction.score.max")

table(neurons.sub$da.pred)

neurons.sub$da.pred.thresh <- ifelse(neurons.sub$prediction.score.max > 0.55, neurons.sub$da.pred, "none")

DimPlot(neurons.sub, group.by = 'da.pred.thresh')
table(neurons.sub$da.pred.thresh)

See the predictions from Kamath DA subtypes


#DA subtypes

# all predicitions
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$da.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$da.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Label from Bhadari adult brain -all brain down sampled


seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Karolinski_DevForebrain_downsample_Level1.RDS")

Idents(seu.r) <- "Level1"
Idents(neurons.sub) <- "Level3"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = neurons.sub, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$Level1, k.weight = 50)
neurons.sub <- AddMetaData(neurons.sub, predictions$predicted.id, col.name = "Bha.pred")
neurons.sub <- AddMetaData(neurons.sub, predictions$prediction.score.max, col.name = "prediction.score.max")

table(neurons.sub$Bha.pred)

neurons.sub$Bha.pred.thresh <- ifelse(neurons.sub$prediction.score.max > 0.80, neurons.sub$Bha.pred, "none")

DimPlot(neurons.sub, group.by = 'Bha.pred.thresh')
table(neurons.sub$Bha.pred.thresh)

#Whole adult brain 

# all predicitions
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$Bha.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$Bha.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Try with only the midbrain and striatum Bhaduri



seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Bhaduri_midbrain_striatum.RDS")
Idents(seu.r) <- "cell_cluster"
Idents(neurons.sub) <- "Level3"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = neurons.sub, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$cell_cluster, k.weight = 50)
neurons.sub <- AddMetaData(neurons.sub, predictions$predicted.id, col.name = "Bha.m.pred")
neurons.sub <- AddMetaData(neurons.sub, predictions$prediction.score.max, col.name = "prediction.score.max")

table(neurons.sub$Bha.m.pred)

neurons.sub$Bha.m.pred.thresh <- ifelse(neurons.sub$prediction.score.max > 0.70, neurons.sub$Bha.m.pred, "none")

DimPlot(neurons.sub, group.by = 'Bha.m.pred.thresh')
table(neurons.sub$Bha.m.pred.thresh)


# all predicitions
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$Bha.m.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$Bha.m.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Use the developing forbrain dataset Karolinski


seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Karolinski_DevForebrain_downsample_Level1.RDS")
Idents(seu.r) <- "Clusters"
Idents(neurons.sub) <- "Level3"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = neurons.sub, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$Clusters, k.weight = 50)
neurons.sub <- AddMetaData(neurons.sub, predictions$predicted.id, col.name = "K.pred")
neurons.sub <- AddMetaData(neurons.sub, predictions$prediction.score.max, col.name = "prediction.score.max")

table(neurons.sub$K.pred)

neurons.sub$K.pred.thresh <- ifelse(neurons.sub$prediction.score.max > 0.70, neurons.sub$K.pred, "none")

DimPlot(neurons.sub, group.by = 'K.pred.thresh')
table(neurons.sub$K.pred.thresh)


# all predicitions
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$K.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$K.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Nowakowski developing cortex

seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Nowakowski_dev_cortext.RDS")
Idents(seu.r) <- "WGCNAcluster"
Idents(neurons.sub) <- "Level3"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = neurons.sub, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$WGCNAcluster, k.weight = 50)
neurons.sub <- AddMetaData(neurons.sub, predictions$predicted.id, col.name = "N.pred")
neurons.sub <- AddMetaData(neurons.sub, predictions$prediction.score.max, col.name = "prediction.score.max")

table(neurons.sub$N.pred)

neurons.sub$N.pred.thresh <- ifelse(neurons.sub$prediction.score.max > 0.70, neurons.sub$N.pred, "none")

DimPlot(neurons.sub, group.by = 'N.pred.thresh')
table(neurons.sub$N.pred.thresh)


# all predicitions
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$N.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$N.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Check the DA neurons and None-neurons in the Kamath

neurons.sub$neur.pred.thresh <- ifelse(neurons.sub$prediction.score.max > 0.45, neurons.sub$neur.pred, "none")

DimPlot(neurons.sub, group.by = 'neur.pred.thresh')
table(neurons.sub$neur.pred.thresh)

Ex_LAMP5_BAIAP3            none        SOX6_DDT 
            357            2374             615 
# all predictions
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$neur.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 


top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(neurons.sub$Level3, neurons.sub$neur.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 


top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Label again after more transfer labels

Subset out the Astrocytes for annotation


Idents(seu.q) <- 'Level3'
# Level 3
cluster.ids <- c("Astro1","Neurons1","RG1","Astro2","Neurons2",
                 "Astro3","Astro4","Neurons3","RG2","Neurons4",
                 "Astro5","Neurons5","RG3-NPC","DANeurons1","Neurons6",
                 "Mix","RG4","Endothelial-NPC","Neurons8-inh-max","DANeurons2",
                 "DANeurons3","RG5","RG6-epi","RG7","RG-OPC"
                 )

astro.list <- c("Astro1","Astro2","Astro3","Astro4",
                 "Astro5","Mix"
                 )

astro.sub <- subset(seu.q, idents = astro.list)

table(astro.sub$Level3)
DimPlot(astro.sub, label = TRUE, repel = TRUE)

Identify markers of astrocyte subgroups


Idents(seu.q) <- 'Level3'

ClusterMarkers <- FindAllMarkers(astro.sub)

top3 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=3, wt = avg_log2FC)
DoHeatmap(astro.sub, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)

marker.top3 <- unique(top3$gene)
DotPlot(astro.sub, features = marker.top3) + RotatedAxis()

write.csv(ClusterMarkers, paste(output_path,"ClusterMarkersLevel3AstroSub.csv"))

Astro 1 and 2, Astro 3 and 4 are similar in makers. These might be merged.

Find the markers between astro 3 and 4 only


Idents(seu.q) <- 'Level3'

ClusterMarkers34 <- FindMarkers(astro.sub, ident.1 = "Astro3", ident.2 = "Astro4", only.pos = TRUE)
ClusterMarkers34 <- FindMarkers(astro.sub, ident.1 = "Astro4", ident.2 = "Astro3", only.pos = TRUE)

top.up <- ClusterMarkers34 %>% top_n(n=5, wt = avg_log2FC)
top.down <- ClusterMarkers34 %>% top_n(n=-5, wt = avg_log2FC)
DoHeatmap(astro.sub, features = c(rownames(top.up),rownames(top.down)), size=3, angle =90, group.bar.height = 0.02)

# these are all up in astro4
up.down <- c("SPINT2", "RGCC", "NNMT", "TRA2B", "BDP1",
             "DDR2", "COPB2", "SELENOS", "ALDH3A2", "DDX42", "CP", "CPVL", "ARL4C")
# the expression was all low, higher in mixed
# no good markers

# up in astro3 but not significant
up.down <- c("ATP1A2", "PTN", "APOD", "DLK1", "PABPN1", "TTYH1", "CDO1")
DotPlot(astro.sub, features = up.down) + RotatedAxis() 


# PTN is up in Astro3

I will merge Astro3 and Astro4 Maybe 1 and 2 also need to be merged


Idents(astro.sub) <- 'Level3'

ClusterMarkers12 <- FindMarkers(astro.sub, ident.1 = "Astro1", ident.2 = "Astro2", only.pos = TRUE)
ClusterMarkers21 <- FindMarkers(astro.sub, ident.1 = "Astro2", ident.2 = "Astro1", only.pos = TRUE)

# astro2 up
up.down <- c("ESM1", "RSPO2", "HTRA1", "KCNQ10T1", "SOX2", "CCSER2", "CALD1", "PJA2")
DotPlot(astro.sub, features = up.down) + RotatedAxis() 

# good markers astro2: ESM1, SOX2, PJA2

# astro1 up not significant
up.down <- c("NDUFAB1", "RPS29", "ATP5PO", "RNF5", "HDDC2", "POLR1D", "FAM229B", "EEF1D")
DotPlot(astro.sub, features = up.down) + RotatedAxis() 
# not good marker for astro 1

I’ll merge astro1 and astro2, also astro3 and astro4


Idents(seu.q) <- 'RNA_snn_res.1.8'

#Idents(seu.q) <- 'Level3'
# Level 3
# merge astro1 + astro2 = astro1, astro3+ astro4 = astro2, now astro5 = astro3
cluster.ids <- c("Astro1","Neurons1","RG1","Astro1","Neurons2",
                 "Astro2","Astro2","Neurons3","RG2","Neurons4",
                 "Astro3","Neurons5","RG3-NPC","DANeurons1","Neurons6",
                 "Mix","RG4","Endothelial-NPC","Neurons8-inh-max","DANeurons2",
                 "DANeurons3","RG5","RG6-epi","RG7","RG-OPC"
                 )


names(cluster.ids) <- levels(seu.q)
seu.q <- RenameIdents(seu.q, cluster.ids)
seu.q$Level4 <- Idents(seu.q)




astro.list <- c("Astro1","Astro2","Astro3","Mix"
                 )

astro.sub <- subset(seu.q, idents = astro.list)

table(astro.sub$Level4)
DimPlot(astro.sub, group.by = "Level4")

# cluster markers with new Astro groupings
Idents(seu.q) <- 'Level4'

ClusterMarkers <- FindAllMarkers(astro.sub, only.pos = TRUE)

top3 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=5, wt = avg_log2FC)
DoHeatmap(astro.sub, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)

marker.top3 <- unique(top3$gene)
DotPlot(astro.sub, features = marker.top3) + RotatedAxis()

write.csv(ClusterMarkers, paste(output_path,"ClusterMarkersLevel4AstroSub.csv"))

### how will this look without mix?


astro.list <- c("Astro1","Astro2","Astro3"
                 )

astro.sub2 <- subset(seu.q, idents = astro.list)

table(astro.sub2$Level4)
DimPlot(astro.sub2, group.by = "Level4")

Idents(seu.q) <- 'Level4'

ClusterMarkers <- FindAllMarkers(astro.sub2, only.pos = TRUE)

top3 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=5, wt = avg_log2FC)
DoHeatmap(astro.sub2, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)

marker.top3 <- unique(top3$gene)
DotPlot(astro.sub2, features = marker.top3) + RotatedAxis()

write.csv(ClusterMarkers, paste(output_path,"ClusterMarkersLevel4AstroSubnoMix.csv"))

There are clearer markers without the mix population

Check the GO terms in the astrocyte subtypes

library(enrichR)

setEnrichrSite("Enrichr") # Human genes
# list of all the databases

# libaries with cell types
dbs <- listEnrichrDbs()
dbs
db <- c('GO_Cellular_Component_2015','GO_Biological_Process_2015',
        'CellMarker_Augmented_2021','Azimuth_Cell_Types_2021')

# enrichr(genes, databases = NULL)

group.list <- as.character(unique(ClusterMarkers$cluster))


group <- "Astro1"

#for(group in group.list){
print(group)
Up.list <- ClusterMarkers %>% filter(cluster == group & avg_log2FC > 0)
genes <- Up.list$gene

Er <- enrichr(genes, databases = db)
print(plotEnrich(Er[[1]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))
print(plotEnrich(Er[[2]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))
print(plotEnrich(Er[[3]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))
print(plotEnrich(Er[[4]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

t.GOcell <- Er[[1]] %>% select(Term, Genes, Combined.Score)
print(t.GOcell)

t.GObio <- Er[[2]] %>% select(Term, Genes, Combined.Score)
print(t.GObio)

t.CellMarker <- Er[[3]] %>% select(Term, Genes, Combined.Score)
print(t.CellMarker)


t.Azi <- Er[[4]] %>% select(Term, Genes, Combined.Score)
print(t.Azi)
#}

Predict the Astrocyte subgroups

seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Nowakowski_dev_cortext.RDS")
Idents(seu.r) <- "WGCNAcluster"
Idents(astro.sub2) <- "Level4"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = astro.sub2, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$WGCNAcluster, k.weight = 50)
astro.sub2 <- AddMetaData(astro.sub2, predictions$predicted.id, col.name = "N.pred")
astro.sub2 <- AddMetaData(astro.sub2, predictions$prediction.score.max, col.name = "prediction.score.max")

table(astro.sub2$N.pred)

astro.sub2$N.pred.thresh <- ifelse(astro.sub2$prediction.score.max > 0.50, astro.sub2$N.pred, "none")

DimPlot(astro.sub2, group.by = 'N.pred.thresh')
table(astro.sub2$N.pred.thresh)


# all predicitions
t.lables <- as.data.frame(table(astro.sub2$Level4, astro.sub2$N.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(astro.sub2$Level4, astro.sub2$N.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Predictions developing forebrain

seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Karolinski_DevForebrain_downsample_Level1.RDS")

Idents(seu.r) <- "Clusters"
Idents(astro.sub2) <- "Level4"


astro.sub2 <- ScaleData(astro.sub2)

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = astro.sub2, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$Clusters, k.weight = 30)
astro.sub2 <- AddMetaData(astro.sub2, predictions$predicted.id, col.name = "k.pred")
astro.sub2 <- AddMetaData(astro.sub2, predictions$prediction.score.max, col.name = "prediction.score.max")

table(astro.sub2$k.pred)

astro.sub2$k.pred.thresh <- ifelse(astro.sub2$prediction.score.max > 0.70, astro.sub2$k.pred, "none")

DimPlot(astro.sub2, group.by = 'N.pred.thresh')
table(astro.sub2$k.pred.thresh)


# all predicitions
t.lables <- as.data.frame(table(astro.sub2$Level4, astro.sub2$k.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(astro.sub2$Level4, astro.sub2$k.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Kamath astrocyte subgroups


seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/Macosko_Data/PD_astro.Rds")
Idents(seu.r) <- "Cell_Subtype"
Idents(astro.sub2) <- "Level4"

seu.r <- NormalizeData(seu.r, normalization.method = "LogNormalize", scale.factor = 10000)
seu.r <- FindVariableFeatures(seu.r, selection.method = "vst", nfeatures = 2000)
seu.r <- ScaleData(seu.r)
seu.r <- RunPCA(seu.r)

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = astro.sub2, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$Cell_Subtype, k.weight = 30)
astro.sub2 <- AddMetaData(astro.sub2, predictions$predicted.id, col.name = "Mas.pred")
astro.sub2 <- AddMetaData(astro.sub2, predictions$prediction.score.max, col.name = "prediction.score.max")

table(astro.sub2$Mas.pred)

astro.sub2$Mas.pred.thresh <- ifelse(astro.sub2$prediction.score.max > 0.90, astro.sub2$Mas.pred, "none")

DimPlot(astro.sub2, group.by = 'Mas.pred.thresh')
table(astro.sub2$Mas.pred.thresh)


# all predicitions
t.lables <- as.data.frame(table(astro.sub2$Level4, astro.sub2$Mas.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(astro.sub2$Level4, astro.sub2$Mas.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Adult brain midbrain and striatum


seu.r <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/PublicData/Bhaduri_midbrain_striatum.RDS")
Idents(seu.r) <- "cell_cluster"
Idents(astro.sub2) <- "Level4"

# find the reference anchors
anchors <- FindTransferAnchors(reference = seu.r, query = astro.sub2, dims = 1:25)
print("getting predictions")
predictions <- TransferData(anchorset = anchors, refdata = seu.r$cell_cluster, k.weight = 30)
# note that if there are not enough anchors you need to reduce the k.weight from default 50
astro.sub2 <- AddMetaData(astro.sub2, predictions$predicted.id, col.name = "Bha.pred")
astro.sub2 <- AddMetaData(astro.sub2, predictions$prediction.score.max, col.name = "prediction.score.max")

table(astro.sub2$Bha.pred)

astro.sub2$Bha.pred.thresh <- ifelse(astro.sub2$prediction.score.max > 0.90, astro.sub2$Bha.pred, "none")

DimPlot(astro.sub2, group.by = 'Bha.pred.thresh')
table(astro.sub2$Bha.pred.thresh)


# all predicitions
t.lables <- as.data.frame(table(astro.sub2$Level4, astro.sub2$Bha.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

# with threshold
t.lables <- as.data.frame(table(astro.sub2$Level4, astro.sub2$Bha.pred.thresh))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 

top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top.thresh <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top.thresh) <- NULL
df.top.thresh$I <- row.names(df.top.thresh)

Will be best to choose some subtype markers Astro1 - most predicted as astrocytes, has GO terms differentation Astro2 - GO terms involving extracellular matrix Astro3 - Go terms involving cell adhsion and proteins

Subset Radial Glia to get subtypes

First calculate DGE and determine if some subgroups should be merged

DoHeatmap(RG.sub, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)
Warning in DoHeatmap(RG.sub, features = top3$gene, size = 3, angle = 90,  :
  The following features were omitted as they were not found in the scale.data slot for the RNA assay: RPL21, RPL34

marker.top3 <- unique(top3$gene)
DotPlot(RG.sub, features = marker.top3) + RotatedAxis()


output_path <- "/Users/rhalenathomas/Documents/Projects_Papers/PhenoID/ForFigures/scRNA/"
write.csv(ClusterMarkers, paste(output_path,"ClusterMarkersRG.csv"))

Many significant markers but not a large LFC for any Indeed the marker genes are highly overlapping between many groups RG7 and RG-OPC are distinctive from the others

RG1 markers are expressed in all groups RG1,RG2,RG3,RG4 are all very overlapping RG5 RG6 are overlapping

RG5 and RG6 aren’t even in the Radial Glia sorted population

Subset just the original RG population and look for markers there


Idents(RG.sub) <- 'orig.ident'

RG.FACS <- subset(RG.sub, idents = "RadialGlia")

DimPlot(RG.FACS, group.by = 'Level3')

NA
NA

Get markers for these groups

Maybe RG1 and RG2 should be merged

clustermarkers.2.4 <- FindMarkers(RG.FACS, ident.1 = "RG2", ident.2 = "RG4")

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 24% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |+++++++++++++++++                                 | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  

No positive markers for RG1 vs RG2 however there are lots of up regulated markers in RG2

Subset out RG1-4


Idents(RG.sub) <- 'Level3'
RG.sub2 <- subset(RG.sub, idents = c("RG1","RG2","RG3-NPC","RG4"))


Idents(RG.sub2) <- 'Level3'
ClusterMarkers <- FindAllMarkers(RG.sub2, only.pos = TRUE)
Calculating cluster RG1

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~02s          
  |++                                                | 2 % ~02s          
  |++                                                | 3 % ~02s          
  |+++                                               | 4 % ~02s          
  |+++                                               | 5 % ~02s          
  |++++                                              | 6 % ~02s          
  |++++                                              | 7 % ~02s          
  |+++++                                             | 8 % ~02s          
  |+++++                                             | 9 % ~02s          
  |++++++                                            | 10% ~02s          
  |++++++                                            | 11% ~02s          
  |+++++++                                           | 12% ~02s          
  |+++++++                                           | 13% ~02s          
  |++++++++                                          | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |+++++++++                                         | 16% ~02s          
  |+++++++++                                         | 17% ~02s          
  |++++++++++                                        | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |+++++++++++                                       | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 24% ~01s          
  |+++++++++++++                                     | 25% ~01s          
  |++++++++++++++                                    | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |+++++++++++++++                                   | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |++++++++++++++++                                  | 30% ~01s          
  |++++++++++++++++                                  | 31% ~01s          
  |+++++++++++++++++                                 | 32% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |+++++++++++++++++++                               | 36% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 39% ~01s          
  |+++++++++++++++++++++                             | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 42% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |+++++++++++++++++++++++++                         | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |++++++++++++++++++++++++++                        | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  
Calculating cluster RG2

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 2 % ~01s          
  |++                                                | 3 % ~01s          
  |+++                                               | 5 % ~01s          
  |+++                                               | 6 % ~01s          
  |++++                                              | 7 % ~01s          
  |+++++                                             | 8 % ~01s          
  |+++++                                             | 9 % ~01s          
  |++++++                                            | 10% ~01s          
  |++++++                                            | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |+++++++                                           | 14% ~01s          
  |++++++++                                          | 15% ~01s          
  |+++++++++                                         | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 19% ~01s          
  |++++++++++                                        | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 24% ~01s          
  |+++++++++++++                                     | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |++++++++++++++                                    | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |++++++++++++++++                                  | 30% ~01s          
  |++++++++++++++++                                  | 31% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |+++++++++++++++++                                 | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |+++++++++++++++++++                               | 36% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |+++++++++++++++++++++                             | 42% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Calculating cluster RG3-NPC

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 3 % ~05s          
  |+++                                               | 4 % ~05s          
  |+++                                               | 5 % ~05s          
  |++++                                              | 6 % ~05s          
  |++++                                              | 7 % ~05s          
  |+++++                                             | 8 % ~05s          
  |+++++                                             | 9 % ~05s          
  |++++++                                            | 10% ~04s          
  |++++++                                            | 11% ~04s          
  |+++++++                                           | 12% ~04s          
  |+++++++                                           | 13% ~04s          
  |++++++++                                          | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |+++++++++                                         | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~04s          
  |++++++++++                                        | 19% ~04s          
  |+++++++++++                                       | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |++++++++++++                                      | 22% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 25% ~04s          
  |++++++++++++++                                    | 26% ~04s          
  |++++++++++++++                                    | 27% ~04s          
  |+++++++++++++++                                   | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |+++++++++++++++++++                               | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |++++++++++++++++++++                              | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |+++++++++++++++++++++                             | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 42% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |+++++++++++++++++++++++                           | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |+++++++++++++++++++++++++                         | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |+++++++++++++++++++++++++++++++                   | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |++++++++++++++++++++++++++++++++                  | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster RG4

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |+                                                 | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |++                                                | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |+++                                               | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |++++                                              | 8 % ~04s          
  |+++++                                             | 9 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |++++++++                                          | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |+++++++++                                         | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |++++++++++                                        | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |+++++++++++                                       | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |+++++++++++++++++                                 | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
View(clustermarkers.1.2)

top3 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=3, wt = avg_log2FC)
DoHeatmap(RG.sub2, features = top3$gene, size=3, angle =90, group.bar.height = 0.02)
Warning in DoHeatmap(RG.sub2, features = top3$gene, size = 3, angle = 90,  :
  The following features were omitted as they were not found in the scale.data slot for the RNA assay: RPL34, RPS12

marker.top3 <- unique(top3$gene)
DotPlot(RG.sub2, features = marker.top3) + RotatedAxis()
Warning: Scaling data with a low number of groups may produce misleading results

top.10 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=10, wt = avg_log2FC)

RG2 and 4 are also overlapping in marker expression - but in 2 vs 4 there are positive markers in both directions

I will merge RG2 and RG4

Test if RG5 and RG6 should be merged into one group


clustermarkers.5.6 <- FindMarkers(RG.sub, ident.1 = "RG5", ident.2 = "RG6-epi")

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~10s          
  |++                                                | 2 % ~06s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 10% ~03s          
  |++++++                                            | 11% ~02s          
  |+++++++                                           | 12% ~02s          
  |+++++++                                           | 13% ~02s          
  |++++++++                                          | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |+++++++++                                         | 16% ~02s          
  |+++++++++                                         | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |+++++++++++                                       | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |+++++++++++++                                     | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |++++++++++++++                                    | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |++++++++++++++++                                  | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 42% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |+++++++++++++++++++++++++                         | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |++++++++++++++++++++++++++                        | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  

There are very different and shouldn’t be merged

Check the cluster markers again



Idents(RG.sub) <- 'Level4'

ClusterMarkers <- FindAllMarkers(RG.sub, only.pos = TRUE)
Calculating cluster RG1

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 2 % ~03s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~03s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 15% ~02s          
  |+++++++++                                         | 16% ~02s          
  |+++++++++                                         | 17% ~02s          
  |++++++++++                                        | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |+++++++++++                                       | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |++++++++++++                                      | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |+++++++++++++                                     | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |++++++++++++++++                                  | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |++++++++++++++++++++++++++                        | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster RG2

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~06s          
  |++                                                | 2 % ~06s          
  |++                                                | 3 % ~06s          
  |+++                                               | 4 % ~06s          
  |+++                                               | 5 % ~06s          
  |++++                                              | 6 % ~05s          
  |++++                                              | 7 % ~05s          
  |+++++                                             | 9 % ~05s          
  |+++++                                             | 10% ~05s          
  |++++++                                            | 11% ~05s          
  |++++++                                            | 12% ~05s          
  |+++++++                                           | 13% ~05s          
  |+++++++                                           | 14% ~05s          
  |++++++++                                          | 15% ~05s          
  |++++++++                                          | 16% ~05s          
  |+++++++++                                         | 17% ~05s          
  |++++++++++                                        | 18% ~05s          
  |++++++++++                                        | 19% ~05s          
  |+++++++++++                                       | 20% ~05s          
  |+++++++++++                                       | 21% ~05s          
  |++++++++++++                                      | 22% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 26% ~04s          
  |++++++++++++++                                    | 27% ~04s          
  |++++++++++++++                                    | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |+++++++++++++++                                   | 30% ~04s          
  |++++++++++++++++                                  | 31% ~04s          
  |++++++++++++++++                                  | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 34% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |+++++++++++++++++++                               | 36% ~04s          
  |+++++++++++++++++++                               | 37% ~04s          
  |++++++++++++++++++++                              | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |+++++++++++++++++++++                             | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |+++++++++++++++++++++++                           | 46% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |++++++++++++++++++++++++                          | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |+++++++++++++++++++++++++++                       | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~03s          
  |++++++++++++++++++++++++++++                      | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |+++++++++++++++++++++++++++++                     | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |+++++++++++++++++++++++++++++++                   | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |++++++++++++++++++++++++++++++++                  | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=06s  
Calculating cluster RG3

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 8 % ~04s          
  |+++++                                             | 9 % ~04s          
  |++++++                                            | 10% ~04s          
  |++++++                                            | 11% ~04s          
  |+++++++                                           | 12% ~04s          
  |+++++++                                           | 13% ~04s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 24% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |+++++++++++++++++                                 | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |++++++++++++++++++++                              | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster RG4

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~02s          
  |++                                                | 2 % ~03s          
  |++                                                | 3 % ~02s          
  |+++                                               | 5 % ~02s          
  |+++                                               | 6 % ~02s          
  |++++                                              | 7 % ~02s          
  |++++                                              | 8 % ~02s          
  |+++++                                             | 9 % ~02s          
  |++++++                                            | 10% ~02s          
  |++++++                                            | 11% ~02s          
  |+++++++                                           | 12% ~02s          
  |+++++++                                           | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |++++++++                                          | 16% ~02s          
  |+++++++++                                         | 17% ~02s          
  |++++++++++                                        | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |+++++++++++                                       | 20% ~02s          
  |+++++++++++                                       | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |++++++++++++++++                                  | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster epi

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~02s          
  |++                                                | 2 % ~02s          
  |++                                                | 3 % ~02s          
  |+++                                               | 4 % ~02s          
  |+++                                               | 5 % ~02s          
  |++++                                              | 7 % ~02s          
  |++++                                              | 8 % ~02s          
  |+++++                                             | 9 % ~02s          
  |+++++                                             | 10% ~02s          
  |++++++                                            | 11% ~02s          
  |+++++++                                           | 12% ~02s          
  |+++++++                                           | 13% ~02s          
  |++++++++                                          | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |+++++++++                                         | 16% ~02s          
  |+++++++++                                         | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |+++++++++++                                       | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |+++++++++++++                                     | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |++++++++++++++++                                  | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |+++++++++++++++++++                               | 36% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |+++++++++++++++++++++                             | 42% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |++++++++++++++++++++++                            | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |+++++++++++++++++++++++++                         | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |++++++++++++++++++++++++++                        | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  
Calculating cluster RG5

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 2 % ~03s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~03s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 7 % ~03s          
  |++++                                              | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |++++++++++                                        | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |+++++++++++                                       | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |+++++++++++++                                     | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |++++++++++++++++                                  | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster opc

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 3 % ~05s          
  |+++                                               | 4 % ~05s          
  |+++                                               | 5 % ~05s          
  |++++                                              | 6 % ~05s          
  |++++                                              | 7 % ~05s          
  |+++++                                             | 8 % ~05s          
  |+++++                                             | 9 % ~04s          
  |++++++                                            | 10% ~04s          
  |++++++                                            | 11% ~04s          
  |+++++++                                           | 12% ~04s          
  |+++++++                                           | 13% ~04s          
  |++++++++                                          | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |+++++++++                                         | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~04s          
  |++++++++++                                        | 19% ~04s          
  |+++++++++++                                       | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |++++++++++++                                      | 22% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 26% ~04s          
  |++++++++++++++                                    | 27% ~04s          
  |++++++++++++++                                    | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |+++++++++++++++++                                 | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |++++++++++++++++++++                              | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |+++++++++++++++++++++                             | 42% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |+++++++++++++++++++++++                           | 46% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |++++++++++++++++++++++++                          | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |++++++++++++++++++++++++++++++++++                | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
top3 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=3, wt = avg_log2FC)
DoHeatmap(RG.sub, features = top3$gene, size=5, angle =90, group.bar.height = 0.02)
Warning in DoHeatmap(RG.sub, features = top3$gene, size = 5, angle = 90,  :
  The following features were omitted as they were not found in the scale.data slot for the RNA assay: RPS13, RPL21, RPL34

marker.top3 <- unique(top3$gene)
DotPlot(RG.sub, features = marker.top3) + RotatedAxis()


top.10 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=10, wt = avg_log2FC)

The markers are all actually lower even though it says a positive LFC for RG1 (merged with 2)

Idents(RG.sub) <- "Level3"

RG1.markers.1 <- FindMarkers(RG.sub, ident.1 = "RG1", ident.2 = c("RG2","RG-OPC"))

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~02s          
  |++                                                | 2 % ~02s          
  |++                                                | 3 % ~02s          
  |+++                                               | 4 % ~02s          
  |+++                                               | 6 % ~02s          
  |++++                                              | 7 % ~02s          
  |++++                                              | 8 % ~02s          
  |+++++                                             | 9 % ~04s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |+++++++++                                         | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |++++++++++++                                      | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |+++++++++++++                                     | 24% ~02s          
  |+++++++++++++                                     | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |++++++++++++++                                    | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 44% ~01s          
  |+++++++++++++++++++++++                           | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  
RG1.markers.2 <- FindMarkers(RG.sub, ident.1 = "RG1", ident.2 = c("RG2","RG3-NPC","RG4" ))

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~07s          
  |++                                                | 2 % ~07s          
  |++                                                | 3 % ~07s          
  |+++                                               | 4 % ~07s          
  |+++                                               | 5 % ~07s          
  |++++                                              | 6 % ~07s          
  |++++                                              | 7 % ~07s          
  |+++++                                             | 8 % ~06s          
  |+++++                                             | 9 % ~06s          
  |++++++                                            | 10% ~06s          
  |++++++                                            | 11% ~06s          
  |+++++++                                           | 12% ~06s          
  |+++++++                                           | 13% ~06s          
  |++++++++                                          | 14% ~06s          
  |++++++++                                          | 15% ~06s          
  |+++++++++                                         | 16% ~06s          
  |+++++++++                                         | 17% ~06s          
  |++++++++++                                        | 18% ~06s          
  |++++++++++                                        | 19% ~06s          
  |+++++++++++                                       | 20% ~06s          
  |+++++++++++                                       | 21% ~06s          
  |++++++++++++                                      | 22% ~06s          
  |++++++++++++                                      | 23% ~05s          
  |+++++++++++++                                     | 24% ~05s          
  |+++++++++++++                                     | 25% ~05s          
  |++++++++++++++                                    | 26% ~05s          
  |++++++++++++++                                    | 27% ~05s          
  |+++++++++++++++                                   | 28% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |++++++++++++++++                                  | 30% ~05s          
  |++++++++++++++++                                  | 31% ~05s          
  |+++++++++++++++++                                 | 32% ~05s          
  |+++++++++++++++++                                 | 33% ~05s          
  |++++++++++++++++++                                | 34% ~05s          
  |++++++++++++++++++                                | 35% ~05s          
  |+++++++++++++++++++                               | 36% ~05s          
  |+++++++++++++++++++                               | 37% ~04s          
  |++++++++++++++++++++                              | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |+++++++++++++++++++++                             | 40% ~04s          
  |+++++++++++++++++++++                             | 41% ~04s          
  |++++++++++++++++++++++                            | 42% ~04s          
  |++++++++++++++++++++++                            | 43% ~04s          
  |+++++++++++++++++++++++                           | 44% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |++++++++++++++++++++++++                          | 46% ~04s          
  |++++++++++++++++++++++++                          | 47% ~04s          
  |+++++++++++++++++++++++++                         | 48% ~04s          
  |+++++++++++++++++++++++++                         | 49% ~04s          
  |++++++++++++++++++++++++++                        | 51% ~04s          
  |++++++++++++++++++++++++++                        | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~03s          
  |+++++++++++++++++++++++++++                       | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |++++++++++++++++++++++++++++                      | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 57% ~03s          
  |+++++++++++++++++++++++++++++                     | 58% ~03s          
  |++++++++++++++++++++++++++++++                    | 59% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |+++++++++++++++++++++++++++++++                   | 62% ~03s          
  |++++++++++++++++++++++++++++++++                  | 63% ~03s          
  |++++++++++++++++++++++++++++++++                  | 64% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=07s  
RG1.markers.3 <- FindMarkers(RG.sub, ident.1 = "RG1", ident.2 = c("RG2","RG3-NPC","RG4","RG5","RG6-epi","RG-OPC"))

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~07s          
  |++                                                | 2 % ~07s          
  |++                                                | 3 % ~06s          
  |+++                                               | 4 % ~06s          
  |+++                                               | 5 % ~06s          
  |++++                                              | 6 % ~06s          
  |++++                                              | 7 % ~06s          
  |+++++                                             | 9 % ~06s          
  |+++++                                             | 10% ~06s          
  |++++++                                            | 11% ~06s          
  |++++++                                            | 12% ~06s          
  |+++++++                                           | 13% ~06s          
  |+++++++                                           | 14% ~06s          
  |++++++++                                          | 15% ~06s          
  |++++++++                                          | 16% ~06s          
  |+++++++++                                         | 17% ~06s          
  |++++++++++                                        | 18% ~06s          
  |++++++++++                                        | 19% ~05s          
  |+++++++++++                                       | 20% ~05s          
  |+++++++++++                                       | 21% ~05s          
  |++++++++++++                                      | 22% ~05s          
  |++++++++++++                                      | 23% ~05s          
  |+++++++++++++                                     | 24% ~05s          
  |+++++++++++++                                     | 26% ~05s          
  |++++++++++++++                                    | 27% ~05s          
  |++++++++++++++                                    | 28% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |+++++++++++++++                                   | 30% ~05s          
  |++++++++++++++++                                  | 31% ~05s          
  |++++++++++++++++                                  | 32% ~05s          
  |+++++++++++++++++                                 | 33% ~05s          
  |++++++++++++++++++                                | 34% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |+++++++++++++++++++                               | 36% ~04s          
  |+++++++++++++++++++                               | 37% ~04s          
  |++++++++++++++++++++                              | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |+++++++++++++++++++++                             | 40% ~04s          
  |+++++++++++++++++++++                             | 41% ~04s          
  |++++++++++++++++++++++                            | 43% ~04s          
  |++++++++++++++++++++++                            | 44% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |+++++++++++++++++++++++                           | 46% ~04s          
  |++++++++++++++++++++++++                          | 47% ~04s          
  |++++++++++++++++++++++++                          | 48% ~04s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |+++++++++++++++++++++++++++                       | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~03s          
  |++++++++++++++++++++++++++++                      | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |+++++++++++++++++++++++++++++                     | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 57% ~03s          
  |++++++++++++++++++++++++++++++                    | 59% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |+++++++++++++++++++++++++++++++                   | 62% ~03s          
  |++++++++++++++++++++++++++++++++                  | 63% ~03s          
  |++++++++++++++++++++++++++++++++                  | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=07s  
table(RG.sub$Level3)

          Astro1         Neurons1              RG1           Astro2         Neurons2           Astro3 
               0                0              817                0                0                0 
          Astro4         Neurons3              RG2         Neurons4           Astro5         Neurons5 
               0                0              341                0                0                0 
         RG3-NPC       DANeurons1         Neurons6              Mix              RG4  Endothelial-NPC 
             304                0                0                0              211                0 
Neurons8-inh-max       DANeurons2       DANeurons3              RG5          RG6-epi              RG7 
               0                0                0               99               57               45 
          RG-OPC 
              39 

I’ll have a look at the predictions and marker list



# predictions
t.lables <- as.data.frame(table(RG.sub$Level3, RG.sub$Bha.mid.stri.pred))
t.lables <- as.data.frame(table(RG.sub$Level3, RG.sub$AIW60.pred))
t.lables <- as.data.frame(table(RG.sub$Level3, RG.sub$AIW120.pred))
t.lables <- as.data.frame(table(RG.sub$Level3, RG.sub$MBOAIW.pred)) # same as AIW120 but predictions are slighlty different, mostly the same
t.lables <- as.data.frame(table(RG.sub$Level3, RG.sub$MBOAST23.pred))
t.lables$Freq <- as.double(t.lables$Freq)
ggplot(t.lables, aes(y = Freq, x = Var1, fill = Var2)) + geom_bar(position = "stack", stat= "identity") + RotatedAxis() 


top.pred.celltype <- as.data.frame(t.lables  %>% group_by(Var1)  %>% top_n(2, Freq))
df.top <- top.pred.celltype[order(top.pred.celltype$Var1,-top.pred.celltype$Freq),]
row.names(df.top) <- NULL
df.top$I <- row.names(df.top)

There are not really RG in mature brains

Do some more predictions with the developing Brain

Now the developing cortex data

Have a look at the potential markers for RG1 and RG2

markers <- c("TMSB4X", "TFPI2","RBP1", "LRRC75A", "RPS12", "RPL34", "RPS13")

DotPlot(RG.sub, features= markers, group.by = 'Level3') +RotatedAxis()

DotPlot(RG.sub, features= markers, group.by = 'Level4') +RotatedAxis()

All the RG1 markers are high in RG-OPC, but that small cluster is predicted differently from RG1

Clustermarkers <- FindAllMarkers(RG.sub, test.use = "MAST", only.pos = TRUE)
Calculating cluster RG1

 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [=========================================================>------------]  84% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Combining coefficients and standard errors
Calculating log-fold changes
Calculating likelihood ratio tests
Refitting on reduced model...

 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [=========================================================>------------]  84% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Calculating cluster RG2

 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Combining coefficients and standard errors
Calculating log-fold changes
Calculating likelihood ratio tests
Refitting on reduced model...

 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Calculating cluster RG3-NPC

 Completed [>---------------------------------------------------------------------]   1% with 0 failures
 Completed [>---------------------------------------------------------------------]   2% with 0 failures
 Completed [=>--------------------------------------------------------------------]   2% with 0 failures
 Completed [=>--------------------------------------------------------------------]   3% with 0 failures
 Completed [=>--------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [======================>-----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [=============================>----------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [====================================>---------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [=========================================================>------------]  84% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Combining coefficients and standard errors
Calculating log-fold changes
Calculating likelihood ratio tests
Refitting on reduced model...

 Completed [=>--------------------------------------------------------------------]   2% with 0 failures
 Completed [=>--------------------------------------------------------------------]   3% with 0 failures
 Completed [=>--------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [======================>-----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [=============================>----------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [====================================>---------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [=========================================================>------------]  84% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Calculating cluster RG4

 Completed [=>--------------------------------------------------------------------]   2% with 0 failures
 Completed [=>--------------------------------------------------------------------]   3% with 0 failures
 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [=============================>----------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Combining coefficients and standard errors
Calculating log-fold changes
Calculating likelihood ratio tests
Refitting on reduced model...

 Completed [=>--------------------------------------------------------------------]   3% with 0 failures
 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [=============================>----------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Calculating cluster RG5

 Completed [=>--------------------------------------------------------------------]   3% with 0 failures
 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Combining coefficients and standard errors
Calculating log-fold changes
Calculating likelihood ratio tests
Refitting on reduced model...

 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Calculating cluster RG6-epi

 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [======================>-----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Combining coefficients and standard errors
Calculating log-fold changes
Calculating likelihood ratio tests
Refitting on reduced model...

 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [======================>-----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Calculating cluster RG7

 Completed [=>--------------------------------------------------------------------]   3% with 0 failures
 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [=============================>----------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Combining coefficients and standard errors
Calculating log-fold changes
Calculating likelihood ratio tests
Refitting on reduced model...

 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [=============================>----------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Calculating cluster RG-OPC

 Completed [>---------------------------------------------------------------------]   2% with 0 failures
 Completed [=>--------------------------------------------------------------------]   2% with 0 failures
 Completed [=>--------------------------------------------------------------------]   3% with 0 failures
 Completed [=>--------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [======================>-----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [=============================>----------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [====================================>---------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [=========================================================>------------]  84% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!
Combining coefficients and standard errors
Calculating log-fold changes
Calculating likelihood ratio tests
Refitting on reduced model...

 Completed [>---------------------------------------------------------------------]   2% with 0 failures
 Completed [=>--------------------------------------------------------------------]   2% with 0 failures
 Completed [=>--------------------------------------------------------------------]   3% with 0 failures
 Completed [=>--------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   4% with 0 failures
 Completed [==>-------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   5% with 0 failures
 Completed [===>------------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   6% with 0 failures
 Completed [====>-----------------------------------------------------------------]   7% with 0 failures
 Completed [====>-----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   8% with 0 failures
 Completed [=====>----------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]   9% with 0 failures
 Completed [======>---------------------------------------------------------------]  10% with 0 failures
 Completed [======>---------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  11% with 0 failures
 Completed [=======>--------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  12% with 0 failures
 Completed [========>-------------------------------------------------------------]  13% with 0 failures
 Completed [========>-------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  14% with 0 failures
 Completed [=========>------------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  15% with 0 failures
 Completed [==========>-----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  16% with 0 failures
 Completed [===========>----------------------------------------------------------]  17% with 0 failures
 Completed [===========>----------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  18% with 0 failures
 Completed [============>---------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  19% with 0 failures
 Completed [=============>--------------------------------------------------------]  20% with 0 failures
 Completed [=============>--------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  21% with 0 failures
 Completed [==============>-------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  22% with 0 failures
 Completed [===============>------------------------------------------------------]  23% with 0 failures
 Completed [===============>------------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  24% with 0 failures
 Completed [================>-----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  25% with 0 failures
 Completed [=================>----------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  26% with 0 failures
 Completed [==================>---------------------------------------------------]  27% with 0 failures
 Completed [==================>---------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  28% with 0 failures
 Completed [===================>--------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  29% with 0 failures
 Completed [====================>-------------------------------------------------]  30% with 0 failures
 Completed [====================>-------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  31% with 0 failures
 Completed [=====================>------------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  32% with 0 failures
 Completed [======================>-----------------------------------------------]  33% with 0 failures
 Completed [======================>-----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  34% with 0 failures
 Completed [=======================>----------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  35% with 0 failures
 Completed [========================>---------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  36% with 0 failures
 Completed [=========================>--------------------------------------------]  37% with 0 failures
 Completed [=========================>--------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  38% with 0 failures
 Completed [==========================>-------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  39% with 0 failures
 Completed [===========================>------------------------------------------]  40% with 0 failures
 Completed [===========================>------------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  41% with 0 failures
 Completed [============================>-----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  42% with 0 failures
 Completed [=============================>----------------------------------------]  43% with 0 failures
 Completed [=============================>----------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  44% with 0 failures
 Completed [==============================>---------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  45% with 0 failures
 Completed [===============================>--------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  46% with 0 failures
 Completed [================================>-------------------------------------]  47% with 0 failures
 Completed [================================>-------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  48% with 0 failures
 Completed [=================================>------------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  49% with 0 failures
 Completed [==================================>-----------------------------------]  50% with 0 failures
 Completed [==================================>-----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  51% with 0 failures
 Completed [===================================>----------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  52% with 0 failures
 Completed [====================================>---------------------------------]  53% with 0 failures
 Completed [====================================>---------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  54% with 0 failures
 Completed [=====================================>--------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  55% with 0 failures
 Completed [======================================>-------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  56% with 0 failures
 Completed [=======================================>------------------------------]  57% with 0 failures
 Completed [=======================================>------------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  58% with 0 failures
 Completed [========================================>-----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  59% with 0 failures
 Completed [=========================================>----------------------------]  60% with 0 failures
 Completed [=========================================>----------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  61% with 0 failures
 Completed [==========================================>---------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  62% with 0 failures
 Completed [===========================================>--------------------------]  63% with 0 failures
 Completed [===========================================>--------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  64% with 0 failures
 Completed [============================================>-------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  65% with 0 failures
 Completed [=============================================>------------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  66% with 0 failures
 Completed [==============================================>-----------------------]  67% with 0 failures
 Completed [==============================================>-----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  68% with 0 failures
 Completed [===============================================>----------------------]  69% with 0 failures
 Completed [================================================>---------------------]  69% with 0 failures
 Completed [================================================>---------------------]  70% with 0 failures
 Completed [================================================>---------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  71% with 0 failures
 Completed [=================================================>--------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  72% with 0 failures
 Completed [==================================================>-------------------]  73% with 0 failures
 Completed [==================================================>-------------------]  74% with 0 failures
 Completed [===================================================>------------------]  74% with 0 failures
 Completed [===================================================>------------------]  75% with 0 failures
 Completed [====================================================>-----------------]  75% with 0 failures
 Completed [====================================================>-----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  76% with 0 failures
 Completed [=====================================================>----------------]  77% with 0 failures
 Completed [=====================================================>----------------]  78% with 0 failures
 Completed [======================================================>---------------]  78% with 0 failures
 Completed [======================================================>---------------]  79% with 0 failures
 Completed [=======================================================>--------------]  79% with 0 failures
 Completed [=======================================================>--------------]  80% with 0 failures
 Completed [=======================================================>--------------]  81% with 0 failures
 Completed [========================================================>-------------]  81% with 0 failures
 Completed [========================================================>-------------]  82% with 0 failures
 Completed [=========================================================>------------]  82% with 0 failures
 Completed [=========================================================>------------]  83% with 0 failures
 Completed [=========================================================>------------]  84% with 0 failures
 Completed [==========================================================>-----------]  84% with 0 failures
 Completed [==========================================================>-----------]  85% with 0 failures
 Completed [===========================================================>----------]  85% with 0 failures
 Completed [===========================================================>----------]  86% with 0 failures
 Completed [============================================================>---------]  86% with 0 failures
 Completed [============================================================>---------]  87% with 0 failures
 Completed [============================================================>---------]  88% with 0 failures
 Completed [=============================================================>--------]  88% with 0 failures
 Completed [=============================================================>--------]  89% with 0 failures
 Completed [==============================================================>-------]  89% with 0 failures
 Completed [==============================================================>-------]  90% with 0 failures
 Completed [==============================================================>-------]  91% with 0 failures
 Completed [===============================================================>------]  91% with 0 failures
 Completed [===============================================================>------]  92% with 0 failures
 Completed [================================================================>-----]  92% with 0 failures
 Completed [================================================================>-----]  93% with 0 failures
 Completed [================================================================>-----]  94% with 0 failures
 Completed [=================================================================>----]  94% with 0 failures
 Completed [=================================================================>----]  95% with 0 failures
 Completed [==================================================================>---]  95% with 0 failures
 Completed [==================================================================>---]  96% with 0 failures
 Completed [===================================================================>--]  96% with 0 failures
 Completed [===================================================================>--]  97% with 0 failures
 Completed [===================================================================>--]  98% with 0 failures
 Completed [====================================================================>-]  98% with 0 failures
 Completed [====================================================================>-]  99% with 0 failures
 Completed [=====================================================================>]  99% with 0 failures
 Completed [=====================================================================>] 100% with 0 failures
 Completed [======================================================================] 100% with 0 failures
                                                                                                        

Done!

Check out the down regulated pathways



Er <- enrichr(genes, databases = db)
Uploading data to Enrichr... Done.
  Querying GO_Cellular_Component_2015... Done.
  Querying GO_Biological_Process_2015... Done.
  Querying Human_Gene_Atlas... Done.
  Querying KEGG_2013... Done.
Parsing results... Done.
print(plotEnrich(Er[[1]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

print(plotEnrich(Er[[2]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

print(plotEnrich(Er[[3]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))

print(plotEnrich(Er[[4]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value"))


t.GOcell <- Er[[1]] %>% select(Term, Genes, Combined.Score)
print(t.GOcell)

t.GObio <- Er[[2]] %>% select(Term, Genes, Combined.Score)
print(t.GObio)

t.CellMarker <- Er[[3]] %>% select(Term, Genes, Combined.Score)
print(t.CellMarker)


t.Azi <- Er[[4]] %>% select(Term, Genes, Combined.Score)
print(t.Azi)

# no

Check markers from Pollen … Kriegstein


# RG markers were up in one group of RG and down another 
# SLC1A3, PAX6, SOX2, PDGFD, GLI3 up in own group, the other has usp STMN2 and NEUROD6
# rg.con <- c("VIM","HES")
rg <- c("SLC1A3", "PAX6", "SOX2", "PDGFD", "GLI3", "STMN2", "NEUROD6", "VIM", "HES1")
DotPlot(RG.sub, features= rg, group.by = 'Level3') +RotatedAxis()


# RG4 matches the first pop SLCI1A3, PAX6 SOX2


# progenitor markers canonical and novel
# EOMES = TBR2
pro <- c("TBR2", "ELAVL4", "NEUROG1", "NEUROD1", "NEUROD4", "PPP1R17", "PENK")
DotPlot(RG.sub, features= pro, group.by = 'Level3') +RotatedAxis()
Warning in FetchData.Seurat(object = object, vars = features, cells = cells) :
  The following requested variables were not found: TBR2

# RP7 has some progen markers NEUROD4
# RG-OPC expresses PENK progenitor markers

# CRYAB is a novel G1 marker

# ventral RG markers
rgv <- c("CRYAB", "PDGFD", "TAGLN2", "FBXO32", "PALLD")
# out svz 
osvz <- c("HOPX", "PTPRZ1", "TNC", "FAM107A", "MOXD1")
DotPlot(RG.sub, features= rgv, group.by = 'Level3') +RotatedAxis()

DotPlot(RG.sub, features= osvz, group.by = 'Level3') +RotatedAxis()

NA
NA

RG4,5,6 classic RG markers and indicated as outer SVZ RG RG7 has intermediate progenitor markers RG2 - deviding cells use CRYAB as a marker RG1 is likely the ventral RG - mark as SOX2- RG-OPC has his VIM and also Ventral - TAGLN2

Not sure which marker is good for RG3

rg3 <- c("NEAT1", "POLR2J3.q", "ZMAT1", "DDX17", "PNISR", "LUC7L3", 
         "DST", "MACF1", "ARGUL1", "NKTR", "WSB1", "SFPQ")

DotPlot(RG.sub, features= rg3, group.by = 'Level3') +RotatedAxis()
Warning in FetchData.Seurat(object = object, vars = features, cells = cells) :
  The following requested variables were not found: POLR2J3.q, ARGUL1

Still need markers for 5 and 6 Check the list and also distinguish from each other

FeaturePlot(seu.q, features = c("CP", "ECEL1", "EMX2", "VIM", "SOX2","HES1","PAX6"))
DimPlot(seu.q, label = TRUE)


# see each of the markers 

rg.sub.markers <- c("SOX2","CRYAB","DDX17","RTPRZ1","CLU","CP","MALAT1","NEUROD4","PENK")
DimPlot(seu.q, label = TRUE)

FeaturePlot(seu.q, features = rg.sub.markers)
Warning in FetchData.Seurat(object = object, vars = c(dims, "ident", features),  :
  The following requested variables were not found: RTPRZ1

FeaturePlot(RG.sub, features = "SOX2", split.by = 'Level3')

# RG-OPC is SOX2 negative
# RG epi and RG7 very low and few 
# RG1 mostly negative but a few very positive cells

FeaturePlot(RG.sub, features = "HES1", split.by = 'Level3')

# a little all over almost all cells high in RG4
FeaturePlot(RG.sub, features = "CRYAB", split.by = 'Level3')

Time to add on the final subgroup annotations - double check what makes sense It might be easier to split the Neurons and Radial glia into subgroups and then compare between those subgroups. RG it’s harder different groups overlap

It seems like RG1,2,4 are more similar

RG4 and RG6 are also very similar RG4 is the most ‘true’ RG

RG4 and 2 overlap a lot, also RG6 overlaps with 4 but not with 6

All have VIM RG1 is negative low other markers HES1, SOX2, PAX6 RG-OPC is negative in PAX6 RG5 and 6 have high upregulation of mitochondrial energy production transcripts

MALAT1 high in 5,6,7 and none in the other groups RG7 more and RG-OPC have some intermediate progenitor markers

5 and 6 are not having tones of differentially expressed genes from eachother, but those genes are overlapping with the other groups

I might merge 2 and 4 previously tested 2vs4 and nothing is up in 2 compared to 4


# neuroD1 very high expression in RG7 but maybe not in all the cells
# test many markers - I've type in and removed for speed
# "SPARCL1"
# DLK1 distinguishes 5 vs 6 but it expressed in most other than 6
# save thing for PTN and ESM1
# up in 6 : MGP actually low in 6 but consistant, not in 5
# FHIT no expressed in all 6 and low everywhere

FeaturePlot(RG.sub, features = c("ID1"), split.by = 'Level3')

NA
NA
NA
NA
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKMS4gR2V0IHRoZSBwcm9wb3J0aW9ucyBvZiBtYWluIGNlbGwgdHlwZXMgZnJvbSBlYWNoIEZBQ1Mgc29ydGVkIHNhbXBsZQoyLiAKCgpgYGB7cn0KCmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KE1hdHJpeCkKbGlicmFyeShnZ3Bsb3QyKQoKCmBgYAoKClJlYWQgaW4gdGhlIDQgc29ydGVkIFBvcHVsYXRpb25zIHNlcGFyYXRlbHkgcHJvY2Vzc2VkIGFuZCBhbm5vdGF0ZWQKCmBgYHtyfQoKcGF0aHdheSA8LSAiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUGhlbm9JRC9zY1JOQXNlcVNvcnRlZC9vYmpzLyIKCk5ldXJvbnMxIDwtIHJlYWRSRFMocGFzdGUocGF0aHdheSwiTmV1cm9uMUxhYmxlZFNldTMwMDkyMDIyLlJEUyIsc2VwID0gIiIpKQpOZXVyb25zMiA8LSByZWFkUkRTKHBhc3RlKHBhdGh3YXksIk5ldXJvbnMyTGFiZWxzU2V1MzAwOTIwMjIuUkRTIixzZXAgPSAiIikpCkFzdHJvIDwtIHJlYWRSRFMocGFzdGUocGF0aHdheSwiR2xpYTFMYWJsZWRTZXUzMDExMDIwMjIuUkRTIixzZXAgPSAiIikpClJHIDwtIHJlYWRSRFMocGFzdGUocGF0aHdheSwiR2xpYTJMYWJsZWRTZXUwMzEwMjAyMi5SRFMiLHNlcCA9ICIiKSkKCgoKYGBgCgoKQ2hlY2sgZWFjaCBvYmplY3QgZm9yIG1haW4gY2VsbCB0eXBlIGxhYmVscwoKYGBge3J9Cgp0YWJsZShOZXVyb25zMSRDZWxsX1R5cGVzKQpkaW0oTmV1cm9uczEpICAjIHRvdGFsIGNlbGxzIDE3MjMKCnRhYmxlKE5ldXJvbnMyJENlbGxfVHlwZXMpCmRpbShOZXVyb25zMikgIyB0b3RhbCBjZWxscyA4ODg0Cgp0YWJsZShBc3RybyRDZWxsX1R5cGUpCmRpbShBc3RybykgIyAyMDAwMAoKdGFibGUoUkckQ2VsbF9UeXBlcykKZGltKFJHKQoKYGBgCgoKRml4IGVhY2ggc2VwYXJhdGUgcG9wdWxhdGlvbnMgCi0gQWRkIEZBQ1Mgc29ydCBuYW1lCi0gRG93biBzYW1wbGUKLSBjaGVjayBwcm9wb3J0aW9ucyBhcmUgbWFpbnRhaW5lZAotIHJlbmFtZSBDZWxsX1R5cGUgaW4gQXN0cm8gdG8gYmUgdGhlIHNhbWUgbmFtZSBmb3IgJ0NlbGxfVHlwZXMnCgoKYGBge3J9CgojIGNlbGwgdHlwZSB2YXJpYWJsZXMgd2VyZW4ndCBuYW1lZCB0aGUgc2FtZSBhbmQgdGhlIHByb2plY3QgSUQgYXJlIG5vdCB0aGUgcG9wdWxhdGlvbiBuYW1lcwojIEknbGwgZnVydGhlciBkb3duIHNhbXBsZSBHbGlhMSAoTGF1bmNoU2FtcGxlMykKCiMgY2hhbmdlIG9yaWcuaWRlbnQgbmFtZXMKSWRlbnRzKE5ldXJvbnMyKSA8LSAnb3JpZy5pZGVudCcKTmV1cm9uczIkb3JpZy5pZGVudCA8LSAnTmV1cm9uczInCklkZW50cyhBc3RybykgPC0gJ29yaWcuaWRlbnQnCkFzdHJvJG9yaWcuaWRlbnQgPC0gJ0FzdHJvY3l0ZXMnCklkZW50cyhSRykgPC0gJ29yaWcuaWRlbnQnClJHJG9yaWcuaWRlbnQgPC0gJ1JhZGlhbEdsaWEnCgoKIyByZW5hbWUgbWV0YWRhdGEgCklkZW50cyhBc3RybykgPC0gJ0NlbGxfVHlwZScKQXN0cm8kQ2VsbF9UeXBlcyA8LSBJZGVudHMoQXN0cm8pCnRhYmxlKEFzdHJvJENlbGxfVHlwZXMpCkFzdHJvJENlbGxfVHlwZSA8LSBOVUxMCgojIGRvd24gc2FtcGxlCklkZW50cyhBc3RybykgPC0gJ29yaWcuaWRlbnQnCkFzdHJvLnN1YiA8LSBzdWJzZXQoQXN0cm8sIGRvd25zYW1wbGUgPSA5MDAwKQp0YWJsZShBc3Ryby5zdWIkQ2VsbF9UeXBlcykKIyBnb29kIHByb3BvcnRpb25zIGFyZSBtYWludGFpbmVkCiMgc2F2ZSBkb3duc2FtcGxlZCBvYmplY3QKCgoKCgoKYWxsLnBvcHMgPC0gbWVyZ2UoTmV1cm9uczEsIHkgPSBjKE5ldXJvbnMyLCBBc3Ryby5zdWIsIFJHKSwgcHJvamVjdCA9ICJQaGVub0lEIikKCgpgYGAKVHJ5IHRvIGRvd24gc2FtcGxlIHRvIGdldCBjbG9zZXIgcHJvcG9ydGlvbnMgb2Ygc3RhcnRpbmcgcG9wdWxhdGlvbnMKCmBgYHtyfQoKIyBkb3duIHNhbXBsZQpJZGVudHMoQXN0cm8pIDwtICdvcmlnLmlkZW50JwpBc3Ryby5zdWIgPC0gc3Vic2V0KEFzdHJvLCBkb3duc2FtcGxlID0gMzAwMCkKdGFibGUoQXN0cm8kQ2VsbF9UeXBlcykKdGFibGUoQXN0cm8uc3ViJENlbGxfVHlwZXMpCgojIGRvd24gc2FtcGxlCklkZW50cyhOZXVyb25zMikgPC0gJ29yaWcuaWRlbnQnCk5ldXJvbnMyLnN1YiA8LSBzdWJzZXQoTmV1cm9uczIsIGRvd25zYW1wbGUgPSAyMDAwKQpkaW0oTmV1cm9uczIpCnRhYmxlKE5ldXJvbnMyJENlbGxfVHlwZXMpCnRhYmxlKE5ldXJvbnMyLnN1YiRDZWxsX1R5cGVzKQoKIyBkb3duIHNhbXBsZQpJZGVudHMoUkcpIDwtICdvcmlnLmlkZW50JwpSRy5zdWIgPC0gc3Vic2V0KFJHLCBkb3duc2FtcGxlID0gMjAwMCkKZGltKFJHKQp0YWJsZShSRyRDZWxsX1R5cGVzKQp0YWJsZShSRy5zdWIkQ2VsbF9UeXBlcykKCmFsbC5wb3BzIDwtIG1lcmdlKE5ldXJvbnMxLCB5ID0gYyhOZXVyb25zMi5zdWIsIEFzdHJvLnN1YiwgUkcuc3ViKSwgcHJvamVjdCA9ICJQaGVub0lEIikKdGFibGUoYWxsLnBvcHMkb3JpZy5pZGVudCkKCgpgYGAKCgoKCgpDaGVjayBtZXJnZQoKYGBge3J9Cgp0YWJsZShhbGwucG9wcyRvcmlnLmlkZW50KQp0YWJsZShhbGwucG9wcyRDZWxsX1R5cGVzKQoKIyBJIG1pZ2h0IHdhbnQgdG8gZG93biBzYW1wbGUgYWxsIHRoZSBvdGhlciBwb3B1bGF0aW9ucyBhY2NlcHQgTmV1cm9uczEgCiMgdGhleSBjbHVzdGVyIGZhaXJseSB3ZWxsCiMgc2F2ZSB0aGUgbWVyZ2VkIG9iamVjdCAKcGF0aHdheSA8LSAiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUGhlbm9JRC9zY1JOQXNlcVNvcnRlZC9vYmpzLyIKc2F2ZVJEUyhhbGwucG9wcywgcGFzdGUocGF0aHdheSwiQWxsNHBvcHNzdWIwNzEwMjAyMi5SRFMiKSkKCiNzZXUucSA8LSByZWFkUkRTKHBhc3RlKHBhdGh3YXksIkFsbDRwb3BzMDcxMDIwMjIuUkRTIikpCiNzZXUucSA8LSByZWFkUkRTKCIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvRGF0YS9zY1JOQXNlcS9QaGVub0lEL3NjUk5Bc2VxU29ydGVkL29ianMvQWxsNHBvcHNzdWIwNzEwMjAyMi5SRFMiKQoKYGBgCgpOb3JtYWxpemUgYW5kIGNsdXN0ZXIKCmBgYHtyfQoKIyBzdGFuZGFyZCB3b3JrZmxvdyAKIyByZXBlYXRlZCBzYW1lIGZvciBhbGwucG9wcyBhbmQgYWxsLnBvcHMgc3ViCnNldSA8LSBOb3JtYWxpemVEYXRhKGFsbC5wb3BzLCBub3JtYWxpemF0aW9uLm1ldGhvZCA9ICJMb2dOb3JtYWxpemUiLCBzY2FsZS5mYWN0b3IgPSAxMDAwMCkKc2V1IDwtIEZpbmRWYXJpYWJsZUZlYXR1cmVzKHNldSwgc2VsZWN0aW9uLm1ldGhvZCA9ICJ2c3QiLCBuZmVhdHVyZXMgPSAyNTAwKQpzZXUgPC0gU2NhbGVEYXRhKHNldSkKc2V1IDwtIFJ1blBDQShzZXUpCkVsYm93UGxvdChzZXUsIG5kaW1zID0gMzApCiMgYmVzdCBjaG9pY2UgUEMgPSAxNQoKIyBkaWRuJ3Qgc2F2ZSB0aGUgb2JqZWN0cyBuZWVkIHRvIHJlcGVhdApzZXUucSA8LSBOb3JtYWxpemVEYXRhKHNldS5xLCBub3JtYWxpemF0aW9uLm1ldGhvZCA9ICJMb2dOb3JtYWxpemUiLCBzY2FsZS5mYWN0b3IgPSAxMDAwMCkKc2V1LnEgPC0gRmluZFZhcmlhYmxlRmVhdHVyZXMoc2V1LnEsIHNlbGVjdGlvbi5tZXRob2QgPSAidnN0IiwgbmZlYXR1cmVzID0gMjUwMCkKc2V1LnEgPC0gU2NhbGVEYXRhKHNldS5xKQpzZXUucSA8LSBSdW5QQ0Eoc2V1LnEpCkVsYm93UGxvdChzZXUucSwgbmRpbXMgPSAzMCkKCgoKCmBgYAoKRmluZCBjbHVzdGVycwoKYGBge3J9CgpzZXUgPC0gUnVuVU1BUChzZXUsIHJlZHVjdGlvbiA9ICJwY2EiLCBuLm5laWdoYm9ycyA9IDI1LCBkaW1zID0gMToyMCkKRGltUGxvdChzZXUsIHJlZHVjdGlvbiA9ICJ1bWFwIikKCnNldS5xIDwtIEZpbmROZWlnaGJvcnMoc2V1LCBkaW1zID0gMToyMCwgay5wYXJhbSA9IDI1KQpzZXUucSA8LSBGaW5kQ2x1c3RlcnMoc2V1LnEsIHJlc29sdXRpb24gPSBjKDAsMC4yLDAuNiwxLDEuMiwgMS41LCAxLjgpKQoKIyBjbGVhciBvdXQgb3RoZXIgY2x1c3RlcmluZyB0byBiZSBhYmxlIHRvIHVzZSBjbHVzdHJlZQpsaWJyYXJ5KGNsdXN0cmVlKQoKI2NvbHVtbnMudG8ucmVtb3ZlIDwtIGMoIlJOQV9zbm5fcmVzLjAuMDUiLCAiUk5BX3Nubl9yZXMuMC4xIiwiUk5BX3Nubl9yZXMuMC4yNSIsIlJOQV9zbm5fcmVzLjAuNSIsCiMgICAgICAgICAgICAgICAgICAgICAgICJSTkFfc25uX3Jlcy4wLjQiLCJSTkFfc25uX3Jlcy4wLjgiKQojZm9yKGkgaW4gY29sdW1ucy50by5yZW1vdmUpIHsKIyAgc2V1LnFbW2ldXSA8LSBOVUxMCiN9CgoKI0RpbVBsb3Qoc2V1LnEsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSAnUk5BX3Nubl9yZXMuMC4wNScpCiNEaW1QbG90KHNldS5xLCByZWR1Y3Rpb24gPSAidW1hcCIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjAuMScpCkRpbVBsb3Qoc2V1LnEsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSAnUk5BX3Nubl9yZXMuMC4yJywgbGFiZWwgPSBUUlVFKQojRGltUGxvdChzZXUucSwgcmVkdWN0aW9uID0gInVtYXAiLCBncm91cC5ieSA9ICdSTkFfc25uX3Jlcy4wLjQnKQpEaW1QbG90KHNldS5xLCByZWR1Y3Rpb24gPSAidW1hcCIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjAuNicsbGFiZWwgPSBUUlVFKQpEaW1QbG90KHNldS5xLCByZWR1Y3Rpb24gPSAidW1hcCIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjEnLCBsYWJlbCA9IFRSVUUpCkRpbVBsb3Qoc2V1LnEsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSAnUk5BX3Nubl9yZXMuMS4yJywgbGFiZWwgPSBUUlVFKQpEaW1QbG90KHNldS5xLCByZWR1Y3Rpb24gPSAidW1hcCIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjEuOCcsIGxhYmVsID0gVFJVRSkKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnb3JpZy5pZGVudCcsIGxhYmVsID0gVFJVRSkKI1ZsblBsb3Qoc2V1LnEsIGZlYXR1cmVzID0gJ25GZWF0dXJlX1JOQScsIGdyb3VwLmJ5ID0gJ29yaWcuaWRlbnQnKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdDZWxsX1R5cGVzJywgbGFiZWwgPSBUUlVFKQoKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnQ2VsbF9UeXBlcycsIHNwbGl0LmJ5ID0gJ29yaWcuaWRlbnQnKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdSTkFfc25uX3Jlcy4xLjgnLCBzcGxpdC5ieSA9ICdvcmlnLmlkZW50JykKCiMgcmVwZWF0IHdoZW4gb2JqZWN0IHdhc24ndCBzYXZlZApzZXUucSA8LSBSdW5VTUFQKHNldS5xLCByZWR1Y3Rpb24gPSAicGNhIiwgbi5uZWlnaGJvcnMgPSAyNSwgZGltcyA9IDE6MjApCkRpbVBsb3Qoc2V1LnEsIHJlZHVjdGlvbiA9ICJ1bWFwIikKCnNldS5xIDwtIEZpbmROZWlnaGJvcnMoc2V1LnEsIGRpbXMgPSAxOjIwLCBrLnBhcmFtID0gMjUpCnNldS5xIDwtIEZpbmRDbHVzdGVycyhzZXUucSwgcmVzb2x1dGlvbiA9IGMoMCwwLjIsMC42LDEsMS4yLCAxLjgpKQoKIyBjbGVhciBvdXQgb3RoZXIgY2x1c3RlcmluZyB0byBiZSBhYmxlIHRvIHVzZSBjbHVzdHJlZQpsaWJyYXJ5KGNsdXN0cmVlKQoKY29sdW1ucy50by5yZW1vdmUgPC0gYygiUk5BX3Nubl9yZXMuMC4wNSIsICJSTkFfc25uX3Jlcy4wLjEiLCJSTkFfc25uX3Jlcy4wLjI1IiwiUk5BX3Nubl9yZXMuMC41IiwKICAgICAgICAgICAgICAgICAgICAgICAiUk5BX3Nubl9yZXMuMC40IiwiUk5BX3Nubl9yZXMuMC44IikKZm9yKGkgaW4gY29sdW1ucy50by5yZW1vdmUpIHsKICBzZXUucVtbaV1dIDwtIE5VTEwKfQoKCgpEaW1QbG90KHNldS5xLCByZWR1Y3Rpb24gPSAidW1hcCIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjEuOCcsIGxhYmVsID0gVFJVRSkKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnb3JpZy5pZGVudCcsIGxhYmVsID0gVFJVRSkKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnQ2VsbF9UeXBlcycsIGxhYmVsID0gVFJVRSkKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnQ2VsbF9UeXBlcycsIHNwbGl0LmJ5ID0gJ29yaWcuaWRlbnQnKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdSTkFfc25uX3Jlcy4xLjgnLCBzcGxpdC5ieSA9ICdvcmlnLmlkZW50JykKCgpjbHVzdHJlZShzZXUucSkKCgoKYGBgCgpOdW1iZXIgRkFDUyBwb3B1bGF0aW9ucyBpbiBlYWNoIGNsdXN0ZXIKTnVtYmVyIG9mIENlbGwgVHlwZXMgaW4gZWFjaCBjbHVzdGVyCgoKYGBge3J9CgpzYXZlUkRTKHNldS5xLCBwYXN0ZSgiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUGhlbm9JRC9zY1JOQXNlcVNvcnRlZC9vYmpzL01lcmdlNFBvcHNMYWJlbHMuUkRTIikpCgpzZXUucSA8LSByZWFkUkRTKCIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvRGF0YS9zY1JOQXNlcS9QaGVub0lEL3NjUk5Bc2VxU29ydGVkL29ianMvTWVyZ2U0UG9wc0xhYmVscy5SRFMiKQoKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnTGV2ZWwzJykKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnTGV2ZWxzJykKCmBgYAoKCgoKYGBge3J9CgojIEZBQ1MgcG9wdWxhdGlvbnMgcGVyIGNsdXN0ZXIKdGFibGUoc2V1LnEkUk5BX3Nubl9yZXMuMS44LCBzZXUucSRvcmlnLmlkZW50KQoKIyBDZWxsIFR5cGVzIHBlciBjbHVzdGVyCnRhYmxlKHNldS5xJFJOQV9zbm5fcmVzLjEuOCwgc2V1LnEkQ2VsbF9UeXBlcykKCmBgYAoKClJlIGFubm90YXRlIHRoZXNlIGNsdXN0ZXJzIHdpdGggc3ViZ3JvdXBzCgpgYGB7cn0KCklkZW50cyhzZXUucSkgPC0gJ1JOQV9zbm5fcmVzLjEuOCcKIyBmcm9tIGsucGFyYW0gNDkKY2x1c3Rlci5pZHMgPC0gYygiQXN0cm8xIiwiTmV1cm9uczEiLCJSRzEiLCJBc3RybzIiLAogICAgICAgICAgICAgICAgICJSRzIiLCJOZXVyb25zMiIsIk5ldXJvbnMzIiwiQXN0cm8zIiwKICAgICAgICAgICAgICAgICAiTmV1cm9uczMiLCJBc3RybzQiLCJBc3RybzUiLCJOZXVyb25zNCIsCiAgICAgICAgICAgICAgICAgIlJHMyIsIlJHNCIsIk5ldXJvbnM1IiwiTmV1cm9uczYiLAogICAgICAgICAgICAgICAgICJFbmRvdGhlbGlhbCIsIk5ldXJvbnM3IikKIyBmcm9tIGsucGFyYW0gMjQ5CmNsdXN0ZXIuaWRzIDwtIGMoIlJHMSIsIk5ldXJvbnMxIiwiQXN0cm8xIiwiQXN0cm8yIiwiTmV1cm9uczIiLAogICAgICAgICAgICAgICAgICJBc3Ryby1NaXgiLCJOZXVyb25zLVJHIiwiUkcyIiwKICAgICAgICAgICAgICAgICAiTmV1cm9uczMiLAogICAgICAgICAgICAgICAgICJFbmRvdGhlbGlhbCIpCiMgay5wYXJhbSAxMjUKY2x1c3Rlci5pZHMgPC0gYygiQXN0cm8xIiwiTmV1cm9uczEiLCJBc3RybzIiLCJOZXVyb25zMSIsCiAgICAgICAgICAgICAgICAgIlJHMS1OZXVyb25zIiwiTmV1cm9uczIiLCJBc3RybzMtTmV1cm9ucy1SRyIsIlJHMSIsCiAgICAgICAgICAgICAgICAgIk5ldXJvbnMzIiwiTmV1cm9uczQiLCJSRzIiLAogICAgICAgICAgICAgICAgICJFbmRvdGhlbGlhbCIsIk1peCIpCiMgay5wYXJhbSAyNQpjbHVzdGVyLmlkcyA8LSBjKCJBc3RybzEiLCJOZXVyb25zMSIsIlJHLU5ldXJvbnMxIiwiQXN0cm8yIiwiTmV1cm9uczIiLAogICAgICAgICAgICAgICAgICJBc3Ryby1SRyIsIkFzdHJvMyIsIk5ldXJvbnMyIiwiUkcyIiwiTmV1cm9uczMiLAogICAgICAgICAgICAgICAgICJBc3RybzMiLCJOZXVyb25zNCIsIlJHMyIsIk5ldXJvbnM0IiwiTmV1cm9uczUiLAogICAgICAgICAgICAgICAgICJNaXgiLCJSRzQiLCJFbmRvdGhlbGlhbCIsIk5ldXJvbnM2IiwiUkctTmV1cm9uczIiLAogICAgICAgICAgICAgICAgICJOZXVyb25zNyIsIkdsaWEiLCJSRzUiLCJNaXgiLCJNaXgiCiAgICAgICAgICAgICAgICAgKQoKCm5hbWVzKGNsdXN0ZXIuaWRzKSA8LSBsZXZlbHMoc2V1LnEpCnNldS5xIDwtIFJlbmFtZUlkZW50cyhzZXUucSwgY2x1c3Rlci5pZHMpCnNldS5xJENsdXN0ZXIuaWRzIDwtIElkZW50cyhzZXUucSkKCkRpbVBsb3Qoc2V1LnEsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgbGFiZWwgPSBUUlVFLCBncm91cC5ieSA9ICdDbHVzdGVyLmlkcycsIHJlcGVsID0gVFJVRSkKRGltUGxvdChzZXUucSwgcmVkdWN0aW9uID0gInVtYXAiLCBsYWJlbCA9IFRSVUUsIGdyb3VwLmJ5ID0gJ0NsdXN0ZXIuaWRzJyxzcGxpdC5ieSA9ICdvcmlnLmlkZW50JykKCiMgc29tZSBjbHVzdGVyIGFyZSBwcm9ibGVtYXRpYyAKIyBjbHVzdGVyIDMgaGFzIDY1MCBSRyBhbmQgMTgwIE5ldXJvbnMKCgpJZGVudHMoc2V1LnEpIDwtICdSTkFfc25uX3Jlcy4xLjgnCgpjbHVzdGVyLmlkcyA8LSBjKCJBc3RybyIsIk5ldXJvbnMiLCJSRyIsIkFzdHJvIiwKICAgICAgICAgICAgICAgICAiUkciLCJOZXVyb25zIiwiTmV1cm9ucyIsIkFzdHJvIiwKICAgICAgICAgICAgICAgICAiTmV1cm9ucyIsIkFzdHJvIiwiQXN0cm8iLCJOZXVyb25zIiwKICAgICAgICAgICAgICAgICAiUkciLCJSRyIsIk5ldXJvbnMiLCJOZXVyb25zIiwKICAgICAgICAgICAgICAgICAiRW5kb3RoZWxpYWwiLCJOZXVyb25zIikKCmNsdXN0ZXIuaWRzIDwtIGMoIlJHIiwiTmV1cm9ucyIsIkFzdHJvIiwiQXN0cm8iLCJOZXVyb25zIiwKICAgICAgICAgICAgICAgICAiQXN0cm8tTWl4IiwiTmV1cm9ucy1SRyIsIlJHIiwKICAgICAgICAgICAgICAgICAiTmV1cm9ucyIsCiAgICAgICAgICAgICAgICAgIkVuZG90aGVsaWFsIikKCiMgay5wYXJhbSAxMjUKY2x1c3Rlci5pZHMgPC0gYygiQXN0cm8iLCJOZXVyb25zIiwiQXN0cm8iLCJOZXVyb25zIiwKICAgICAgICAgICAgICAgICAiUkcxLU5ldXJvbnMiLCJOZXVyb25zIiwiQXN0cm8zLU5ldXJvbnMtUkciLCJSRyIsCiAgICAgICAgICAgICAgICAgIk5ldXJvbnMiLCJOZXVyb25zIiwiUkciLAogICAgICAgICAgICAgICAgICJFbmRvdGhlbGlhbCIsIk1peCIpCiMgSyAyNQpjbHVzdGVyLmlkcyA8LSBjKCJBc3RybyIsIk5ldXJvbnMiLCJSRy1OZXVyIiwiQXN0cm8iLCJOZXVyb25zIiwKICAgICAgICAgICAgICAgICAiQXN0cm8tUkciLCJBc3RybyIsIk5ldXJvbnMiLCJSRyIsIk5ldXJvbnMiLAogICAgICAgICAgICAgICAgICJBc3RybyIsIk5ldXJvbnMiLCJSRyIsIk5ldXJvbnMiLCJOZXVyb25zIiwKICAgICAgICAgICAgICAgICAiTWl4IiwiUkciLCJFbmRvdGhlbGlhbCIsIk5ldXJvbnMiLCJSRy1OZXVyIiwKICAgICAgICAgICAgICAgICAiTmV1cm9ucyIsIkdsaWEiLCJSRyIsIk1peCIsIk1peCIKICAgICAgICAgICAgICAgICApCgpuYW1lcyhjbHVzdGVyLmlkcykgPC0gbGV2ZWxzKHNldS5xKQpzZXUucSA8LSBSZW5hbWVJZGVudHMoc2V1LnEsIGNsdXN0ZXIuaWRzKQpzZXUucSRMZXZlbDEgPC0gSWRlbnRzKHNldS5xKQoKRGltUGxvdChzZXUucSwgcmVkdWN0aW9uID0gInVtYXAiLCBsYWJlbCA9IFRSVUUsIGdyb3VwLmJ5ID0gJ0xldmVsMScsIHJlcGVsID0gVFJVRSkKRGltUGxvdChzZXUucSwgcmVkdWN0aW9uID0gInVtYXAiLCBsYWJlbCA9IFRSVUUsIGdyb3VwLmJ5ID0gJ0xldmVsMScsc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcpCgoKCmBgYAoKCgoKCgpNYWtlIGEgdGFibGUgb2YgdGhlIHByb3BvcnRpb24gb2YgY2VsbCB0eXBlcyBhbmQgYSBwbG90CgpgYGB7cn0KCiMgY2VsbCB0eXBlIGxhYmVscyBkb25lIHNlcGFyYXRlbHkgCgpkZiA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKHNldS5xJG9yaWcuaWRlbnQsIHNldS5xJENlbGxfVHlwZXMpKQoKCmNlbGwub3JkZXIgPC0gYygiQXN0cm9jeXRlcyIsIkVuZG90aGVsaWFsIiwiR2xpYSIsIk5ldXJvbnMiLCJOUEMiLCJPdGhlciIsIlJhZGlhbCBHbGlhIikKY2VsbC5vcmRlciA8LSByZXYoY2VsbC5vcmRlcikKCgpnZ3Bsb3QoZGYsIGFlcyh4ID0gVmFyMSwgeSA9IEZyZXEsIGZpbGwgPSBWYXIyKSkgKyAKICBnZW9tX2NvbChwb3NpdGlvbiA9ICJmaWxsIikgKyAKICAKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHNpemUgPSAxMiksIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMikpICsKICBsYWJzKHkgPSAiUHJvcG9ydGlvbiBvZiBDZWxscyIsIHggPSAiIikgKyB0aGVtZV9jbGFzc2ljKCkgKwogIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLCBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLCBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0KSkgCgoKIyBzYXZlIHRoZSBwcm9wb3J0aW9uIGNoYXJ0IHdpdGggY29sb3VycyBtYXRjaGluZyB0aGUgVU1BUHMgCgoKCiMgY29sb3VyIG9yZGVyIHRvIG1hdGNoIGNlbGwgdHlwZSBvcmRlcgpjbHVzdC5jb2xvdXJzIDwtIGMoImNob2NvbGF0ZTEiLCJkZWVwc2t5Ymx1ZSIsInN0ZWVsYmx1ZTQiLCJtZWRpdW1wdXJwbGUzIiwicmVkMiIsImJ1cmx5d29vZDMiLCAKICAgICAgICAgICAgICAgICAgICJwaW5rMiIpCgoKCnBkZihwYXN0ZShvdXRwdXRfcGF0aCwiQmFyQ2hhcnRQcm9wb3J0aW9uQ2VsbFR5cGVzaW40cG9wcy5wZGYiKSwgaGVpZ2h0ID0gNSwgd2lkdGggPSA3KQpnZ3Bsb3QoZGYsIGFlcyh4ID0gVmFyMSwgeSA9IEZyZXEsIGZpbGwgPSBWYXIyKSkgKyAKICBnZW9tX2NvbChwb3NpdGlvbiA9ICJmaWxsIikgKyB0aGVtZV9jbGFzc2ljKCkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNsdXN0LmNvbG91cnMpICsKICAjc2NhbGVfeF9kaXNjcmV0ZShleHBhbmQgPSBjKDAsIDApKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwwKSkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHNpemUgPSAxNiksIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNikpICsKICBsYWJzKHkgPSAiUHJvcG9ydGlvbiBvZiBDZWxscyIsIHggPSAiIikgKwogIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLCBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLCBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSkgCmRldi5vZmYoKQoKIyBjaGFuZ2UgdGhlIGNvbG91cnMKCiMgdHJ5IHdpdGggdGhlIG5ldyBsYWJlbCBiYXNlZCBvbiB0aGUgbWVyZ2Ugb2JqZWN0IGNsdXN0ZXJzCgpkZi4yIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoc2V1LnEkb3JpZy5pZGVudCwgc2V1LnEkQ2x1c3Rlci5pZHMpKQoKZ2dwbG90KGRmLjIsIGFlcyh4ID0gVmFyMSwgeSA9IEZyZXEsIGZpbGwgPSBWYXIyKSkgKyAKICBnZW9tX2NvbChwb3NpdGlvbiA9ICJmaWxsIikgKyAKICAjc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiIzAwNzNDMkZGIiwgIiNFRkMwMDBGRiIpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBzaXplID0gMTIpLCBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpKSArCiAgbGFicyh5ID0gIlByb3BvcnRpb24gb2YgQ2VsbHMiLCB4ID0gIiIpICsgdGhlbWVfY2xhc3NpYygpICsKICB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCkpIAoKIyBtYWluIHN1Ymdyb3VwcyByZW5hbWVkCmRmLjMgPC0gYXMuZGF0YS5mcmFtZSh0YWJsZShzZXUucSRvcmlnLmlkZW50LCBzZXUucSRMZXZlbDEpKQpnZ3Bsb3QoZGYuMywgYWVzKHggPSBWYXIxLCB5ID0gRnJlcSwgZmlsbCA9IFZhcjIpKSArIAogIGdlb21fY29sKHBvc2l0aW9uID0gImZpbGwiKSArIAogICNzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjMDA3M0MyRkYiLCAiI0VGQzAwMEZGIikpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHNpemUgPSAxMiksIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMikpICsKICBsYWJzKHkgPSAiUHJvcG9ydGlvbiBvZiBDZWxscyIsIHggPSAiIikgKyB0aGVtZV9jbGFzc2ljKCkgKwogIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLCBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLCBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0KSkgCgoKCgoKCgoKYGBgCgoKTWFrZSBhIHByb3Byb3Rpb24gdGFibGUKCgpgYGB7cn0KCmxpYnJhcnkoc3RyaW5ncikKbGlicmFyeShyZXNoYXBlKQoKIyBmb3Igb3JpZ2luYWwgY2VsbCB0eXBlcyAKCgpkZi5yIDwtIHJlc2hhcGUoZGYsIGlkdmFyID0gIlZhcjIiLCB0aW1ldmFyID0gIlZhcjEiLCBkaXJlY3Rpb24gPSAid2lkZSIpCmRhdDEgPC0gZGYucgpkYXQxW10gPC0gbGFwcGx5KGRhdDFbXSwgZnVuY3Rpb24oeCl7CiAgIyBDaGVjayBpZiB0aGUgY29sdW1uIGlzIG51bWVyaWMKICBpZiAoaXMubnVtZXJpYyh4KSl7CiAgICByZXR1cm4oeC9zdW0oeCkqMTAwKQogIH0gZWxzZXsKICAgIHJldHVybih4KQogIH0KfSkKZGF0MQp3cml0ZS5jc3YoZGF0MSwgcGFzdGUob3V0cHV0X3BhdGgsInByb3BvcnRpb25vZkNlbGx0eXBlc2luNHBvcHMuY3N2IikpCgojIyMgZm9yIG5ldyBtYWluIGNlbGwgdHlwZXMgCgpkZi5yIDwtIHJlc2hhcGUoZGYuMywgaWR2YXIgPSAiVmFyMiIsIHRpbWV2YXIgPSAiVmFyMSIsIGRpcmVjdGlvbiA9ICJ3aWRlIikKCmRhdDMgPC0gZGYucgpkYXQzW10gPC0gbGFwcGx5KGRhdDNbXSwgZnVuY3Rpb24oeCl7CiAgIyBDaGVjayBpZiB0aGUgY29sdW1uIGlzIG51bWVyaWMKICBpZiAoaXMubnVtZXJpYyh4KSl7CiAgICByZXR1cm4oeC9zdW0oeCkqMTAwKQogIH0gZWxzZXsKICAgIHJldHVybih4KQogIH0KfSkKZGF0MwoKCiMjIyB3aXRoIHRoZSBzdWJ0eXBlcyBvZiBjZWxscwpkZi5yIDwtIHJlc2hhcGUoZGYuMiwgaWR2YXIgPSAiVmFyMiIsIHRpbWV2YXIgPSAiVmFyMSIsIGRpcmVjdGlvbiA9ICJ3aWRlIikKCmRhdDIgPC0gZGYucgpkYXQyW10gPC0gbGFwcGx5KGRhdDJbXSwgZnVuY3Rpb24oeCl7CiAgIyBDaGVjayBpZiB0aGUgY29sdW1uIGlzIG51bWVyaWMKICBpZiAoaXMubnVtZXJpYyh4KSl7CiAgICByZXR1cm4oeC9zdW0oeCkqMTAwKQogIH0gZWxzZXsKICAgIHJldHVybih4KQogIH0KfSkKZGF0MgoKCgoKCmBgYAoKClByb2Nlc3MgS2FtYXRoIAoKYGBge3J9CgoKc2V1IDwtIE5vcm1hbGl6ZURhdGEoc2V1LnIsIG5vcm1hbGl6YXRpb24ubWV0aG9kID0gIkxvZ05vcm1hbGl6ZSIsIHNjYWxlLmZhY3RvciA9IDEwMDAwKQpzZXUgPC0gRmluZFZhcmlhYmxlRmVhdHVyZXMoc2V1LCBzZWxlY3Rpb24ubWV0aG9kID0gInZzdCIsIG5mZWF0dXJlcyA9IDIwMDApCnNldSA8LSBTY2FsZURhdGEoc2V1KQpzZXUgPC0gUnVuUENBKHNldSkKCnNhdmVSRFMoc2V1LCIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvRGF0YS9zY1JOQXNlcS9QdWJsaWNEYXRhL0thbWF0aFRvdGFsX2Rvd25zYW1wbGUuUkRTIikKCgoKYGBgCgoKCgoKCgoKUmUgYW5ub3RhdGUgdGhlIG5ldyBjbHVzdGVyZWQgb2JqZWN0CgpHZXQgcHJlZGljdGlvbnM6ClVzZSBLYW1hdGggYWxsIGNlbGxzIGRvd24gc2FtcGxlZCAoZG9lc24ndCBjb250YWluIFJhZGlhbCBHbGlhKQpEZXZlbG9waW5nIEZvcmVicmFpbgpPcmdhbm9pZHMgQUlXMDAyIDEyMCBkYXlzCgpgYGB7cn0KCiMgS2FtYXRoIG1pZGJyYWluIFBvc3Rtb3J0ZW0gc24KCnNldS5yIDwtIHJlYWRSRFMoIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL1B1YmxpY0RhdGEvS2FtYXRoVG90YWxfZG93bnNhbXBsZS5SRFMiKQojSWRlbnRzKHNldS5yKSA8LSAiQ2VsbF9UeXBlIgojc2V1LnIgPC0gc3Vic2V0KHNldS5yLCBpZGVudHMgPSBjKCJhc3RybyIsImRhIiwibm9uZGEiLCJlbmRvIikpCgpJZGVudHMoc2V1LnIpIDwtICJDZWxsX1N1YnR5cGUiCgojIGZpbmQgdGhlIHJlZmVyZW5jZSBhbmNob3JzCmFuY2hvcnMgPC0gRmluZFRyYW5zZmVyQW5jaG9ycyhyZWZlcmVuY2UgPSBzZXUuciwgcXVlcnkgPSBzZXUucSwgZGltcyA9IDE6MjUpCnByaW50KCJnZXR0aW5nIHByZWRpY3Rpb25zIikKcHJlZGljdGlvbnMgPC0gVHJhbnNmZXJEYXRhKGFuY2hvcnNldCA9IGFuY2hvcnMsIHJlZmRhdGEgPSBzZXUuciRDZWxsX1N1YnR5cGUsIGsud2VpZ2h0ID0gNTApCnNldS5xIDwtIEFkZE1ldGFEYXRhKHNldS5xLCBwcmVkaWN0aW9ucyRwcmVkaWN0ZWQuaWQsIGNvbC5uYW1lID0gIm1iLnByZWQiKQpzZXUucSA8LSBBZGRNZXRhRGF0YShzZXUucSwgcHJlZGljdGlvbnMkcHJlZGljdGlvbi5zY29yZS5tYXgsIGNvbC5uYW1lID0gInByZWRpY3Rpb24uc2NvcmUubWF4IikKCnRhYmxlKHNldS5xJG1iLnByZWQpCgoKc2V1LnEkbWIucHJlZC50aHJlc2ggPC0gaWZlbHNlKHNldS5xJHByZWRpY3Rpb24uc2NvcmUubWF4ID4gMC43LCBzZXUucSRtYi5wcmVkLCAibm9uZSIpCgpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdtYi5wcmVkLnRocmVzaCcpCnRhYmxlKHNldS5xJG1iLnByZWQudGhyZXNoKQoKCiMqKioqKiBzdWJ0eXBlIHByZWRpY3Rpb25zIGRvbid0IHdvcmsgCiNidXQgd2hlbiBJIGhhZCB0aGUgc2VwYXJhdGUgc3VieXRlcyB0aGV5IGRpZCB3b3JrIG9uIG5ldXJvbnMgYW5kIGFzdHJvIHNlcGFyYXRlbHkuIEl0IGNvdWxkIGJlIHRoZXJlIGp1c3QgYXJlbid0IGVub3VnaCByZWZlcmVuY2UgY2VsbHMgLSBJIG9ubHkgaGF2ZSAxMDAwIGVhY2ggbWFpbiBncm91cC4gIAoKIyBJJ20gZ29pbmcgdG8gdHJ5IHdpdGggdGhlIG1haW4gY2VsbCB0eXBlcyBncm91cHMgaW5zdGVhZAoKSWRlbnRzKHNldS5yKSA8LSAiQ2VsbF9UeXBlIgp0YWJsZShzZXUuciRDZWxsX1R5cGUpCgojIGZpbmQgdGhlIHJlZmVyZW5jZSBhbmNob3JzCmFuY2hvcnMgPC0gRmluZFRyYW5zZmVyQW5jaG9ycyhyZWZlcmVuY2UgPSBzZXUuciwgcXVlcnkgPSBzZXUucSwgZGltcyA9IDE6MjUpCnByaW50KCJnZXR0aW5nIHByZWRpY3Rpb25zIikKcHJlZGljdGlvbnMgPC0gVHJhbnNmZXJEYXRhKGFuY2hvcnNldCA9IGFuY2hvcnMsIHJlZmRhdGEgPSBzZXUuciRDZWxsX1R5cGUpCnNldS5xIDwtIEFkZE1ldGFEYXRhKHNldS5xLCBwcmVkaWN0aW9ucyRwcmVkaWN0ZWQuaWQsIGNvbC5uYW1lID0gIm1iLnByZWQiKQpzZXUucSA8LSBBZGRNZXRhRGF0YShzZXUucSwgcHJlZGljdGlvbnMkcHJlZGljdGlvbi5zY29yZS5tYXgsIGNvbC5uYW1lID0gInByZWRpY3Rpb24uc2NvcmUubWF4IikKCnRhYmxlKHNldS5xJG1iLnByZWQpCgoKc2V1LnEkbWIucHJlZC50aHJlc2ggPC0gaWZlbHNlKHNldS5xJHByZWRpY3Rpb24uc2NvcmUubWF4ID4gMC43LCBzZXUucSRtYi5wcmVkLCAibm9uZSIpCgoKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnbWIucHJlZC50aHJlc2gnLCBsYWJlbCA9IFRSVUUpCnRhYmxlKHNldS5xJG1iLnByZWQudGhyZXNoKQoKIyBjcmVhdGUgdGhlIHByZWRpY3Rpb24gdG9wIDIgY2VsbCB0eXBlcyBwZXIgY2x1c3RlciBkYXRhZnJhbWUKCiMgc3RpbGwgdXNlbGVzcwoKIyBiZXN0IHRvIHVzZSB0aGUgc3VidHlwZSBwcmVkaWN0aW9ucyBmcm9tIHRoZSBzZXBhcmF0ZSBvYmplY3RzIGFmdGVyIHN1YnNldHRpbmcKCgpgYGAKCgpUcnkgdGhlIEJoYWR1cmkgd2hvbGUgYnJhaW4gZGF0YXNldAoKYGBge3J9CgojIG1pZGJyYWluIGFuZCBzdHJpYXR1bQoKc2V1LnIgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUHVibGljRGF0YS9CaGFkdXJpX21pZGJyYWluX3N0cmlhdHVtLlJEUyIpCgpJZGVudHMoc2V1LnIpIDwtICJjZWxsX2NsdXN0ZXIiCgojIGZpbmQgdGhlIHJlZmVyZW5jZSBhbmNob3JzCmFuY2hvcnMgPC0gRmluZFRyYW5zZmVyQW5jaG9ycyhyZWZlcmVuY2UgPSBzZXUuciwgcXVlcnkgPSBzZXUucSwgZGltcyA9IDE6MjUpCnByaW50KCJnZXR0aW5nIHByZWRpY3Rpb25zIikKcHJlZGljdGlvbnMgPC0gVHJhbnNmZXJEYXRhKGFuY2hvcnNldCA9IGFuY2hvcnMsIHJlZmRhdGEgPSBzZXUuciRjZWxsX2NsdXN0ZXIpCgpzZXUucSA8LSBBZGRNZXRhRGF0YShzZXUucSwgcHJlZGljdGlvbnMkcHJlZGljdGVkLmlkLCBjb2wubmFtZSA9ICJtYnMucHJlZCIpCnNldS5xIDwtIEFkZE1ldGFEYXRhKHNldS5xLCBwcmVkaWN0aW9ucyRwcmVkaWN0aW9uLnNjb3JlLm1heCwgY29sLm5hbWUgPSAicHJlZGljdGlvbi5zY29yZS5tYXgiKQoKdGFibGUoc2V1LnEkbWJzLnByZWQpCnNldS5xJG1icy5wcmVkLnRocmVzaCA8LSBpZmVsc2Uoc2V1LnEkcHJlZGljdGlvbi5zY29yZS5tYXggPiAwLjcsIHNldS5xJG1icy5wcmVkLCAibm9uZSIpCgoKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnbWJzLnByZWQudGhyZXNoJywgbGFiZWwgPSBUUlVFKQp0YWJsZShzZXUucSRtYi5wcmVkLnRocmVzaCkKCgojIHJlYWQgaW4gdGhlIHJlZmVyZW5jZSBkYXRhc2V0CiMgd2hvbGUgYnJhaW4gQmhhZHVyaSBkb3duIHNhbXBsZWQKc2V1LnIgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUHVibGljRGF0YS9CaGFkdXJpX2Rvd25zYW1wbGUuUkRTIikKCklkZW50cyhzZXUucikgPC0gImNlbGxfY2x1c3RlciIKCiMgZmluZCB0aGUgcmVmZXJlbmNlIGFuY2hvcnMKYW5jaG9ycyA8LSBGaW5kVHJhbnNmZXJBbmNob3JzKHJlZmVyZW5jZSA9IHNldS5yLCBxdWVyeSA9IHNldS5xLCBkaW1zID0gMToyNSkKcHJpbnQoImdldHRpbmcgcHJlZGljdGlvbnMiKQpwcmVkaWN0aW9ucyA8LSBUcmFuc2ZlckRhdGEoYW5jaG9yc2V0ID0gYW5jaG9ycywgcmVmZGF0YSA9IHNldS5yJGNlbGxfY2x1c3RlcikKc2V1LnEgPC0gQWRkTWV0YURhdGEoc2V1LnEsIHByZWRpY3Rpb25zJHByZWRpY3RlZC5pZCwgY29sLm5hbWUgPSAiYnJhaW4ucHJlZCIpCnNldS5xIDwtIEFkZE1ldGFEYXRhKHNldS5xLCBwcmVkaWN0aW9ucyRwcmVkaWN0aW9uLnNjb3JlLm1heCwgY29sLm5hbWUgPSAicHJlZGljdGlvbi5zY29yZS5tYXgiKQoKdGFibGUoc2V1LnEkYnJhaW4ucHJlZCkKc2V1LnEkYnJhaW4ucHJlZC50aHJlc2ggPC0gaWZlbHNlKHNldS5xJHByZWRpY3Rpb24uc2NvcmUubWF4ID4gMC43LCBzZXUucSRicmFpbi5wcmVkLCAibm9uZSIpCgoKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnYnJhaW4ucHJlZC50aHJlc2gnLCBsYWJlbCA9IFRSVUUpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gImJyYWluLnByZWQiKQp0YWJsZShzZXUucSRicmFpbi5wcmVkLnRocmVzaCkKCmBgYAoKCkxhYmVsIHRyYW5zZmVyIHdpdGggdGhlIGRldmVsb3BpbmcgZm9yYnJhaW4KCmBgYHtyfQoKc2V1LnIgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUHVibGljRGF0YS9LYXJvbGluc2tpX0RldkZvcmVicmFpbl9kb3duc2FtcGxlX0xldmVsMS5SRFMiKQpjb2xuYW1lcyhzZXUuckBtZXRhLmRhdGEpCkRlZmF1bHRBc3NheShzZXUucikgPC0gJ1JOQScKCiMgY2x1c3RlcnMgaGFzIHN1Ymdyb3VwcwojIGxldmVscyBhcmUgbWFpbiBjZWxsIGdyb3VwcyAKSWRlbnRzKHNldS5yKSA8LSAiTGV2ZWwxIgoKIyBmaW5kIHRoZSByZWZlcmVuY2UgYW5jaG9ycwphbmNob3JzIDwtIEZpbmRUcmFuc2ZlckFuY2hvcnMocmVmZXJlbmNlID0gc2V1LnIsIHF1ZXJ5ID0gc2V1LnEsIGRpbXMgPSAxOjI1KQpwcmludCgiZ2V0dGluZyBwcmVkaWN0aW9ucyIpCnByZWRpY3Rpb25zIDwtIFRyYW5zZmVyRGF0YShhbmNob3JzZXQgPSBhbmNob3JzLCByZWZkYXRhID0gc2V1LnIkTGV2ZWwxKQpzZXUucSA8LSBBZGRNZXRhRGF0YShzZXUucSwgcHJlZGljdGlvbnMkcHJlZGljdGVkLmlkLCBjb2wubmFtZSA9ICJkZmIucHJlZCIpCnNldS5xIDwtIEFkZE1ldGFEYXRhKHNldS5xLCBwcmVkaWN0aW9ucyRwcmVkaWN0aW9uLnNjb3JlLm1heCwgY29sLm5hbWUgPSAicHJlZGljdGlvbi5zY29yZS5tYXgiKQoKdGFibGUoc2V1LnEkZGZiLnByZWQpCnNldS5xJGRmYi5wcmVkLnRocmVzaCA8LSBpZmVsc2Uoc2V1LnEkcHJlZGljdGlvbi5zY29yZS5tYXggPiAwLjg1LCBzZXUucSRkZmIucHJlZCwgIm5vbmUiKQoKdGFibGUoc2V1LnEkZGZiLnByZWQudGhyZXNoKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdkZmIucHJlZC50aHJlc2gnLCBsYWJlbCA9IEZBTFNFKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICJkZmIucHJlZCIpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gJ29yaWcuaWRlbnQnLCBzcGxpdC5ieSA9ICdkZmIucHJlZC50aHJlc2gnKQpEaW1QbG90KHNldS5xLCBzcGxpdC5ieSA9ICdvcmlnLmlkZW50JywgZ3JvdXAuYnkgPSAnZGZiLnByZWQudGhyZXNoJykKCgpgYGAKCgoKQUlXMDAyIDEyMCBkYXlzIHByZWRpY3Rpb25zCgpgYGB7cn0KCnNldS5yIDwtIHJlYWRSRFMoIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL0FJV3RyaW8xMjBkYXlzL01PaW50ZWdyYXRlZENsdXN0ZXJLMTIzcmVzMC44Lm5hbWVzX25vdjE2XzIwMjEiKQoKIyMjIG1heWJlIHRoZSBrbm9ja291dHMgYXJlIGNhdXNpbmcgYSBwcm9ibGVtCklkZW50cyhzZXUucikgPC0gJ29yaWcuaWRlbnQnCnNldS5yIDwtIHN1YnNldChzZXUuciwgaWRlbnRzID0gKQoKSWRlbnRzKHNldS5yKSA8LSAicmVzMDhuYW1lcyIKRGVmYXVsdEFzc2F5KHNldS5yKSA8LSAiUk5BIgoKYW5jaG9ycyA8LSBGaW5kVHJhbnNmZXJBbmNob3JzKHJlZmVyZW5jZSA9IHNldS5yICxxdWVyeSA9IHNldS5xLCBkaW1zID0gMToyNSkKcHJpbnQoImdldHRpbmcgcHJlZGljdGlvbnMiKQpwcmVkaWN0aW9ucyA8LSBUcmFuc2ZlckRhdGEoYW5jaG9yc2V0ID0gYW5jaG9ycywgcmVmZGF0YSA9IHNldS5yJHJlczA4bmFtZXMpCgpzZXUucSA8LSBBZGRNZXRhRGF0YShzZXUucSwgcHJlZGljdGlvbnMkcHJlZGljdGVkLmlkLCBjb2wubmFtZSA9ICJobW8ucHJlZCIpCnNldS5xIDwtIEFkZE1ldGFEYXRhKHNldS5xLCBwcmVkaWN0aW9ucyRwcmVkaWN0aW9uLnNjb3JlLm1heCwgY29sLm5hbWUgPSAicHJlZGljdGlvbi5zY29yZS5tYXgiKQoKdGFibGUoc2V1LnEkaG1vLnByZWQpCnNldS5xJGhtby5wcmVkLnRocmVzaCA8LSBpZmVsc2Uoc2V1LnEkcHJlZGljdGlvbi5zY29yZS5tYXggPiAwLjg1LCBzZXUucSRobW8ucHJlZCwgIm5vbmUiKQoKdGFibGUoc2V1LnEkaG1vLnByZWQudGhyZXNoKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdobW8ucHJlZC50aHJlc2gnLCBsYWJlbCA9IEZBTFNFKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICJobW8ucHJlZCIpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gJ29yaWcuaWRlbnQnLCBzcGxpdC5ieSA9ICdobW8ucHJlZC50aHJlc2gnKQpEaW1QbG90KHNldS5xLCBzcGxpdC5ieSA9ICdvcmlnLmlkZW50JywgZ3JvdXAuYnkgPSAnaG1vLnByZWQudGhyZXNoJykKCmBgYAoKTWFrZSBhIHN1bW1hcnkgdGFibGUgb2YgcHJlZGljdGlvbnMKCmBgYHtyfQoKCiMgQUlXMDAyIDEyMCBkYXlzIHByZWRpY3Rpb25zIC0gdGFrZSB0aGUgdGhyZXNob2xkZWQgb3B0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKHNldS5xJFJOQV9zbm5fcmVzLjEuOCwgc2V1LnEkaG1vLnByZWQudGhyZXNoKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCnRvcC5wcmVkLmNlbGx0eXBlIDwtIGFzLmRhdGEuZnJhbWUodC5sYWJsZXMgICU+JSBncm91cF9ieShWYXIxKSAgJT4lIHRvcF9uKDIsIEZyZXEpKQpkZi50b3AgPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wKSA8LSBOVUxMCmRmLnRvcCRJIDwtIHJvdy5uYW1lcyhkZi50b3ApCgoKCgpgYGAKCgpUcnkgdGhlIDYwIGRheXMgb3JnYW5vaWRzIEFJVwoKYGBge3J9CgpzZXUuciA8LXJlYWRSRFMoIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL0FJV3RyaW82MGRheXMvQVdJMDAyUGFya2luS09QaW5rS082MGRheXNfbGFiZWxzXzE0MDUyMDIyLnJkcyIpCgpJZGVudHMoc2V1LnIpIDwtICJjbHVzdGVyLmlkcyIKRGVmYXVsdEFzc2F5KHNldS5yKSA8LSAiUk5BIgoKYW5jaG9ycyA8LSBGaW5kVHJhbnNmZXJBbmNob3JzKHJlZmVyZW5jZSA9IHNldS5yICxxdWVyeSA9IHNldS5xLCBkaW1zID0gMToyNSkKcHJpbnQoImdldHRpbmcgcHJlZGljdGlvbnMiKQpwcmVkaWN0aW9ucyA8LSBUcmFuc2ZlckRhdGEoYW5jaG9yc2V0ID0gYW5jaG9ycywgcmVmZGF0YSA9IHNldS5yJGNsdXN0ZXIuaWRzKQoKc2V1LnEgPC0gQWRkTWV0YURhdGEoc2V1LnEsIHByZWRpY3Rpb25zJHByZWRpY3RlZC5pZCwgY29sLm5hbWUgPSAiaG1vNjAucHJlZCIpCnNldS5xIDwtIEFkZE1ldGFEYXRhKHNldS5xLCBwcmVkaWN0aW9ucyRwcmVkaWN0aW9uLnNjb3JlLm1heCwgY29sLm5hbWUgPSAicHJlZGljdGlvbi5zY29yZS5tYXgiKQoKdGFibGUoc2V1LnEkaG1vNjAucHJlZCkKc2V1LnEkaG1vNjAucHJlZC50aHJlc2ggPC0gaWZlbHNlKHNldS5xJHByZWRpY3Rpb24uc2NvcmUubWF4ID4gMC44NSwgc2V1LnEkaG1vNjAucHJlZCwgIm5vbmUiKQoKdGFibGUoc2V1LnEkaG1vNjAucHJlZC50aHJlc2gpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gJ2htbzYwLnByZWQudGhyZXNoJywgbGFiZWwgPSBGQUxTRSkKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAiaG1vNjAucHJlZCIpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gJ29yaWcuaWRlbnQnLCBzcGxpdC5ieSA9ICdobW82MC5wcmVkLnRocmVzaCcpCkRpbVBsb3Qoc2V1LnEsIHNwbGl0LmJ5ID0gJ29yaWcuaWRlbnQnLCBncm91cC5ieSA9ICdobW82MC5wcmVkLnRocmVzaCcpCgoKCmBgYAoKCk1ha2UgcHJlZGljdGlvbnMgZnJvbSA2MCBkYXlzCgpgYGB7cn0KIyBBSVcwMDIgMTIwIGRheXMgcHJlZGljdGlvbnMgLSB0YWtlIHRoZSB0aHJlc2hvbGRlZCBvcHRpb25zCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoc2V1LnEkUk5BX3Nubl9yZXMuMS44LCBzZXUucSRobW82MC5wcmVkLnRocmVzaCkpCnQubGFibGVzJEZyZXEgPC0gYXMuZG91YmxlKHQubGFibGVzJEZyZXEpCmdncGxvdCh0LmxhYmxlcywgYWVzKHkgPSBGcmVxLCB4ID0gVmFyMSwgZmlsbCA9IFZhcjIpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdD0gImlkZW50aXR5IikgKyBSb3RhdGVkQXhpcygpIAp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wIDwtIHRvcC5wcmVkLmNlbGx0eXBlW29yZGVyKHRvcC5wcmVkLmNlbGx0eXBlJFZhcjEsLXRvcC5wcmVkLmNlbGx0eXBlJEZyZXEpLF0Kcm93Lm5hbWVzKGRmLnRvcCkgPC0gTlVMTApkZi50b3AkSSA8LSByb3cubmFtZXMoZGYudG9wKQoKCmBgYAoKCkxvb2sgYXQgdGhlIGV4cHJlc3Npb24gb2YgZ2VuZSBsaXN0cwoKYGBge3J9CgpJZGVudHMoc2V1LnEpIDwtICdSTkFfc25uX3Jlcy4xLjgnCgpmZWF0dXJlX2xpc3QgPSBjKCJNS0k2NyIsIlNPWDIiLCJQT1U1RjEiLCJETFgyIiwiUEFYNiIsIlNPWDkiLCJIRVMxIiwiTkVTIiwiUkJGT1gzIiwiTUFQMiIsIk5DQU0xIiwiQ0QyNCIsIkdSSUEyIiwiR1JJTjJCIiwiR0FCQlIxIiwiR0FEMSIsIkdBRDIiLCJHQUJSQTEiLCJHQUJSQjIiLCJUSCIsIkFMREgxQTEiLCJMTVgxQiIsIk5SNEEyIiwiQ09SSU4iLCJDQUxCMSIsIktDTko2IiwiQ1hDUjQiLCJJVEdBNiIsIlNMQzFBMyIsIkNENDQiLCJBUVA0IiwiUzEwMEIiLCAiUERHRlJBIiwiT0xJRzIiLCJNQlAiLCJDTEROMTEiLCJWSU0iLCJWQ0FNMSIpCgojRG9IZWF0bWFwKHNldS5xLCBmZWF0dXJlcyA9IGZlYXR1cmVfbGlzdCwgc2l6ZT0zLCBhbmdsZSA9OTAsIGdyb3VwLmJhci5oZWlnaHQgPSAwLjAyKQpEb3RQbG90KHNldS5xLCBmZWF0dXJlcyA9IGZlYXR1cmVfbGlzdCkgK1JvdGF0ZWRBeGlzKCkKClBEX3BvdWxpbiA9IGMoIlRIIiwiU0xDNkEzIiwiU0xDMThBMiIsIlNPWDYiLCJORE5GIiwiU05DRyIsIkFMREgxQTEiLCJDQUxCMSIsIlRBQ1IyIiwiU0xDMTdBNiIsIlNMQzMyQTEiLCJPVFgyIiwiR1JQIiwiTFBMIiwiQ0NLIiwiVklQIikKCiNEb0hlYXRtYXAoc2V1LnEsIGZlYXR1cmVzID0gUERfcG91bGluLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjAuNicpCkRvdFBsb3Qoc2V1LnEsIGZlYXR1cmVzID0gUERfcG91bGluKStSb3RhdGVkQXhpcygpCgplYWxyeU5ldXIgPSBjKCJEQ1giLCJORVVST0QxIiwiVEJSMSIpCnByb2xpZmVyYXRpb24gPSBjKCJQQ05BIiwiTUtJNjciKQpuZXVyYWxzdGVtID0gYygiU09YMiIsIk5FUyIsIlBBWDYiLCJNQVNIMSIpCgpmZWF0dXJlX2xpc3QgPC0gYygiRENYIiwiTkVVUk9EMSIsIlRCUjEiLCJQQ05BIiwiTUtJNjciLCJTT1gyIiwiTkVTIiwiUEFYNiIsIk1BU0gxIikKI0RvSGVhdG1hcChzZXUucSwgZmVhdHVyZXMgPSBmZWF0dXJlX2xpc3QsIHNpemU9MywgYW5nbGUgPTkwLCBncm91cC5iYXIuaGVpZ2h0ID0gMC4wMiwgZ3JvdXAuYnkgPSAnUk5BX3Nubl9yZXMuMC42JykKRG90UGxvdChzZXUucSwgZmVhdHVyZXMgPSBmZWF0dXJlX2xpc3QpK1JvdGF0ZWRBeGlzKCkKIyBubyBwcm9saWZlcmF0aW9uIG1hcmtlciBleHByZXNzaW9uICBQQ05BIG9yIE1LSTY3CiMgY2x1c3RlciA0IERBIG5ldXJvbnMgLSBzaG93cyBlYXJseSBuZXVyb24gbWFya2VyIGFuZCBsb3cgUEFYIDQKIyBjbHVzdGVyIDMgaGFzIGhpZ2hlciBTT1gyIC0gbmV1cm9ibGFzdCBtYXJrZXIgLyBOUEMgbWFya2VyCgptYXRfbmV1cm9uID0gYygiUkJGT1gzIiwiU1lQIiwiRExHNDUiLCJWQU1QMSIsIlZBTVAyIiwiVFVCQjMiLCJTWVQxIiwiQlNOIiwiSE9NRVIxIiwiU0xDMTdBNiIpIAojIE5ldU4gaXMgRk9YMyAtIFJCRk9YMwojIFBTRDk1IGFsc28gU1AtOTAgb3IgRExHNAojIFZHTFVUMiBpcyBTTEMxN0E2CiNEb0hlYXRtYXAoc2V1LnEsIGZlYXR1cmVzID0gbWF0X25ldXJvbiwgc2l6ZT0zLCBhbmdsZSA9OTAsIGdyb3VwLmJhci5oZWlnaHQgPSAwLjAyLCBncm91cC5ieSA9ICdSTkFfc25uX3Jlcy4wLjYnKQojIGNsdXN0ZXIgNCBhbHNvIHNob3cgbWF0dXJlIG5ldXJvbiBtYXJrZXJzCkRvdFBsb3Qoc2V1LnEsIGZlYXR1cmVzID0gbWF0X25ldXJvbikrUm90YXRlZEF4aXMoKQojIGV4Y2l0YXRvcnkgbmV1cm9uIG1hcmtlcnMKZXggPSBjKCJHUklBMiIsIkdSSUExIiwiR1JJQTQiLCJHUklOMSIsIkdSSU4yQiIsIkdSSU4yQSIsIkdSSU4zQSIsIkdSSU4zIiwiR1JJUDEiLCJDQU1LMkEiKQojRG9IZWF0bWFwKHNldS5xLCBmZWF0dXJlcyA9IGV4LCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjAuNicpCkRvdFBsb3Qoc2V1LnEsIGZlYXR1cmVzID0gZXgpK1JvdGF0ZWRBeGlzKCkKIyBpbmhpYml0b3J5IG5ldXJvbiBtYXJrZXJzCmluaCA9IGMoIkdBRDEiLCJHQUQyIiwgIkdBVDEiLCJQVkFMQiIsIkdBQlIyIiwiR0FCUjEiLCJHQlJSMSIsIkdBQlJCMiIsIkdBQlJCMSIsIkdBQlJCMyIsIkdBQlJBNiIsIkdBQlJBMSIsIkdBQlJBNCIsIlRSQUsyIikKI0RvSGVhdG1hcChzZXUucSwgZmVhdHVyZXMgPSBpbmgsIHNpemU9MywgYW5nbGUgPTkwLCBncm91cC5iYXIuaGVpZ2h0ID0gMC4wMiwgZ3JvdXAuYnkgPSAnUk5BX3Nubl9yZXMuMC42JykKRG90UGxvdChzZXUucSwgZmVhdHVyZXMgPSBpbmgpK1JvdGF0ZWRBeGlzKCkKIyBjbHVzdGVyIDQgaXMgbW9yZSBleGNpdGF0b3J5IHRoYW4gaW5oYml0b3J5IGJ1dCBuZWl0aGVyIG1hcmtlciBzZXQgaGFzIG11Y2ggZXhwcmVzc2lvbiAKCiMjIyBnbGlhIG1hcmtlcnMKbWljcm9nbGlhID0gYygiUFRQUkMiLCJBSUYxIiwiQURHUkUxIikgICMgQURHUkUxIGlzIGEgbWljcm9nbGlhIG1hcmtlciBGNC84MCwgQ0Q0NSBpcyBQVFBSQywgZ2VuZSBuYW1lIElCQTEgaXMgQUlGMQphc3RvbGdOUENwcm9taWNybyA9IGMoIkdGQVAiLCJTMTAwQiIsIlNMQzFBMiIsIk1CUCIsIlNPWDEwIiwiU1BQMSIsIkRDWCIsIk5FVVJPRDEiLCJUQlIxIiwiUENOQSIsIk1LSTY3IiwiUFRQUkMiLCJBSUYxIiwiQURHUkUxIikKIyBub3RlIEdMVDEgaXMgRUFBVDIgd2hpY2ggaXMgU0xDMUEyIGdsdXRhdG1hdGUgdHJhbnNwb3J0ZXIKIyBlcGl0aGVsaWFsCmVwaSA9IGMoIkhFUzEiLCJIRVM1IiwiU09YMiIsIlNPWDEwIiwiTkVTIiwiQ0RIMSIsIk5PVENIMSIpICMgZS1jYWRoZXJpbiBpcyBDREgxCgojRG9IZWF0bWFwKHNldS5xLCBmZWF0dXJlcyA9IGFzdG9sZ05QQ3Byb21pY3JvLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjAuNicpCkRvdFBsb3Qoc2V1LnEsIGZlYXR1cmVzID0gYXN0b2xnTlBDcHJvbWljcm8pK1JvdGF0ZWRBeGlzKCkKIyBjbHVzdGVyIDQgaXMgbW9yZSBleGNpdGF0b3J5IHRoYW4gaW5oYml0b3J5IGJ1dCBuZWl0aGVyIG1hcmtlciBzZXQgaGFzIG11Y2ggZXhwcmVzc2lvbiAKI0RvSGVhdG1hcChzZXUucSwgZmVhdHVyZXMgPSBlcGksIHNpemU9MywgYW5nbGUgPTkwLCBncm91cC5iYXIuaGVpZ2h0ID0gMC4wMiwgZ3JvdXAuYnkgPSAnUk5BX3Nubl9yZXMuMC42JykKRG90UGxvdChzZXUucSwgZmVhdHVyZXMgPSBlcGkpK1JvdGF0ZWRBeGlzKCkKCiMgYWxzbyBhZGQgUmFkaWFsIGdsaWEgbWFya2VyIG92ZXJsYXAgd2l0aCBHbGlhIGFuZCBOZXVyb25zCgpmZWF0dXJlcyA8LSBjKCJQVFBSQyIsIkFJRjEiLCJBREdSRTEiLCAiVklNIiwgIlROQyIsIlBUUFJaMSIsIkZBTTEwN0EiLCJIT1BYIiwiTElGUiIsCiAgICAgICAgICAgICAgIklUR0I1IiwiSUw2U1QiKQojRG9IZWF0bWFwKHNldS5xLCBmZWF0dXJlcyA9IGZlYXR1cmVzLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjAuNicpCkRvdFBsb3Qoc2V1LnEsIGZlYXR1cmVzID0gZmVhdHVyZXMpK1JvdGF0ZWRBeGlzKCkKYGBgCgoKClJlbmFtZSBjZWxsIHR5cGVzIAoKYGBge3J9CgpJZGVudHMoc2V1LnEpIDwtICdSTkFfc25uX3Jlcy4xLjgnCgpjbHVzdGVyLmlkcyA8LSBjKCJBc3Ryby1SRy1QcmUiLCJOZXVyb25zMS1pbSIsIlJHMS1OUEMiLCJBc3RybzEiLCJOZXVyb25zMi1pbSIsCiAgICAgICAgICAgICAgICAgIkFzdHJvLU5QQyIsIkFzdHJvIiwiTmV1cm9uczMiLCJSRzIiLCJOZXVyb25zNCIsCiAgICAgICAgICAgICAgICAgIkFzdHJvMyIsIk5ldXJvbnM1IiwiUkczLU5QQyIsIk5ldXJvbnM2LURBIiwiTmV1cm9uczctTlBDIiwKICAgICAgICAgICAgICAgICAiTWl4LVJHNCIsIlJHNSIsIkVuZG90aGVsaWFsLU5QQyIsIk5ldXJvbnM4LWluaC1tYXgiLCJOZXVyb25zOS1EQSIsCiAgICAgICAgICAgICAgICAgIk5ldXJvbnMxMC1EQSIsIlJHNiIsIlJHNy1lcGkiLCJOUEMtQXN0cm8iLCJSRy1PUEMiCiAgICAgICAgICAgICAgICAgKQoKCm5hbWVzKGNsdXN0ZXIuaWRzKSA8LSBsZXZlbHMoc2V1LnEpCnNldS5xIDwtIFJlbmFtZUlkZW50cyhzZXUucSwgY2x1c3Rlci5pZHMpCnNldS5xJExldmVsMiA8LSBJZGVudHMoc2V1LnEpCgpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdMZXZlbDInLCBsYWJlbCA9IFRSVUUpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gJ0xldmVsMicsIGxhYmVsID0gVFJVRSwgc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gICdvcmlnLmlkZW50JykKCiMgbmFtZSB0aGUgbWFqb3IgZ3JvdXBzIHRvZ2V0aGVyIGFuZCBzZWUgaG93IGl0IG1hdGNoZXMgdXAgd2l0aCBzcGFjZQoKY2x1c3Rlci5pZHMgPC0gYygiQXN0cm8xIiwiTmV1cm9uczEiLCJSRzEiLCJBc3RybzIiLCJOZXVyb25zMiIsCiAgICAgICAgICAgICAgICAgIkFzdHJvMyIsIkFzdHJvNCIsIk5ldXJvbnMzIiwiUkcyIiwiTmV1cm9uczQiLAogICAgICAgICAgICAgICAgICJBc3RybzUiLCJOZXVyb25zNSIsIlJHMy1OUEMiLCJEQU5ldXJvbnMxIiwiTmV1cm9uczYiLAogICAgICAgICAgICAgICAgICJNaXgiLCJSRzQiLCJFbmRvdGhlbGlhbC1OUEMiLCJOZXVyb25zOC1pbmgtbWF4IiwiREFOZXVyb25zMiIsCiAgICAgICAgICAgICAgICAgIkRBTmV1cm9uczMiLCJSRzUiLCJSRzYtZXBpIiwiUkc3IiwiUkctT1BDIgogICAgICAgICAgICAgICAgICkKCgpuYW1lcyhjbHVzdGVyLmlkcykgPC0gbGV2ZWxzKHNldS5xKQpzZXUucSA8LSBSZW5hbWVJZGVudHMoc2V1LnEsIGNsdXN0ZXIuaWRzKQpzZXUucSRMZXZlbDMgPC0gSWRlbnRzKHNldS5xKQoKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnTGV2ZWwzJywgbGFiZWwgPSBUUlVFLCByZXBlbCA9IFRSVUUpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gJ0xldmVsMycsIGxhYmVsID0gVFJVRSwgc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gICdvcmlnLmlkZW50JykKCklkZW50cyhzZXUucSkgPC0gJ1JOQV9zbm5fcmVzLjEuOCcKCmNsdXN0ZXIuaWRzIDwtIGMoIkFzdHJvIiwiTmV1cm9ucyIsIlJHIiwiQXN0cm8iLCJOZXVyb25zIiwKICAgICAgICAgICAgICAgICAiQXN0cm8iLCJBc3RybyIsIk5ldXJvbnMiLCJSRyIsIk5ldXJvbnMiLAogICAgICAgICAgICAgICAgICJBc3RybyIsIk5ldXJvbnMiLCJSRyIsIkRBTmV1cm9ucyIsIk5ldXJvbnMiLAogICAgICAgICAgICAgICAgICJNaXgiLCJSRyIsIkVuZG90aGVsaWFsIiwiTmV1cm9ucyIsIkRBTmV1cm9ucyIsCiAgICAgICAgICAgICAgICAgIkRBTmV1cm9ucyIsIlJHIiwiUkciLCJSRyIsIlJHIgogICAgICAgICAgICAgICAgICkKCgpuYW1lcyhjbHVzdGVyLmlkcykgPC0gbGV2ZWxzKHNldS5xKQpzZXUucSA8LSBSZW5hbWVJZGVudHMoc2V1LnEsIGNsdXN0ZXIuaWRzKQpzZXUucSRMZXZlbHMgPC0gSWRlbnRzKHNldS5xKQoKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnTGV2ZWxzJywgbGFiZWwgPSBUUlVFLCByZXBlbCA9IFRSVUUpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gJ0xldmVscycsIGxhYmVsID0gVFJVRSwgc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gICdvcmlnLmlkZW50JykKCgoKCmBgYAoKClNlZSBob3cgdGhlIGxhYmVscyBmaXQgd2l0aCBzb3J0ZWQgY2VsbCB0eXBlcwoKYGBge3J9Cgp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKHNldS5xJG9yaWcuaWRlbnQsIHNldS5xJExldmVsMykpCnQubGFibGVzJEZyZXEgPC0gYXMuZG91YmxlKHQubGFibGVzJEZyZXEpCmdncGxvdCh0LmxhYmxlcywgYWVzKHkgPSBGcmVxLCB4ID0gVmFyMSwgZmlsbCA9IFZhcjIpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdD0gImlkZW50aXR5IikgKyBSb3RhdGVkQXhpcygpIAoKdG9wLnByZWQuY2VsbHR5cGUgPC0gYXMuZGF0YS5mcmFtZSh0LmxhYmxlcyAgJT4lIGdyb3VwX2J5KFZhcjEpICAlPiUgdG9wX24oMiwgRnJlcSkpCmRmLnRvcCA8LSB0b3AucHJlZC5jZWxsdHlwZVtvcmRlcih0b3AucHJlZC5jZWxsdHlwZSRWYXIxLC10b3AucHJlZC5jZWxsdHlwZSRGcmVxKSxdCnJvdy5uYW1lcyhkZi50b3ApIDwtIE5VTEwKZGYudG9wJEkgPC0gcm93Lm5hbWVzKGRmLnRvcCkKCiNOb3QgYSBiYWQgYnJlYWtkb3duIG1peAp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKHNldS5xJG9yaWcuaWRlbnQsIHNldS5xJExldmVscykpCnQubGFibGVzJEZyZXEgPC0gYXMuZG91YmxlKHQubGFibGVzJEZyZXEpCmdncGxvdCh0LmxhYmxlcywgYWVzKHkgPSBGcmVxLCB4ID0gVmFyMSwgZmlsbCA9IFZhcjIpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdD0gImlkZW50aXR5IikgKyBSb3RhdGVkQXhpcygpIAoKdG9wLnByZWQuY2VsbHR5cGUgPC0gYXMuZGF0YS5mcmFtZSh0LmxhYmxlcyAgJT4lIGdyb3VwX2J5KFZhcjEpICAlPiUgdG9wX24oMiwgRnJlcSkpCmRmLnRvcCA8LSB0b3AucHJlZC5jZWxsdHlwZVtvcmRlcih0b3AucHJlZC5jZWxsdHlwZSRWYXIxLC10b3AucHJlZC5jZWxsdHlwZSRGcmVxKSxdCnJvdy5uYW1lcyhkZi50b3ApIDwtIE5VTEwKZGYudG9wJEkgPC0gcm93Lm5hbWVzKGRmLnRvcCkKCgpgYGAKCgpNYWtlIHRoZSBjZWxsIHR5cGUgcHJvcG9ydGlvbiBwbG90cyAtIG1ha2UgdGhlIGlucHV0IGNvbG91cnMgc2hvdWxkIGJlIGRpZmZlcmVudCB0aGFuIGNlbGwgdHlwZSBjb2xvdXJzCkNlbGwgdHlwZSAKVXNlIGNvbG91cnMgZnJvbSBvdGhlciBmaWd1cmVzIGlmIHBvc3NpYmxlOgpBc3Ryb2N5dGVzID0gb3JhbmdlCk9yYW5nZQpSYWRpYWwgR2xpYSA9IFBpbmsKTmV1cm9ucyA9IFB1cnBsZQpFbmRvdGhlbGlhbCBicmlnaHQgYmx1ZQoKCkknbGwgbWFrZSBhIFVNQVAgd2l0aCB0aGUgaW5wdXQgY29sb3VycyAgLSBtYXRjaCB0byAyRCAtIAoKYGBge3J9CgojIEZpZ3VyZSA2IEMKIyBVTUFQIHdpdGggdGhlIDQgb3JpZy5pZGVudHMKCnNhbXBsZS5vcmRlciA8LSBjKCJBc3Ryb2N5dGVzIiwiUmFkaWFsR2xpYSIsIk5ldXJvbnMxIiwiTmV1cm9uczIiKQpzYW1wbGUub3JkZXIgPC0gcmV2KHNhbXBsZS5vcmRlcikKCiMgY29sb3VyIG9yZGVyIHRvIG1hdGNoIGNlbGwgdHlwZSBvcmRlcgpjbHVzdC5jb2xvdXJzIDwtIGMoInJveWFsYmx1ZSIsICJpbmRpYW5yZWQyIiwic3ByaW5nZ3JlZW40IiwicGFsZWdyZWVuMiIpCiAKSWRlbnRzKHNldS5xKSA8LSAnb3JpZy5pZGVudCcKICAgICAgCkRpbVBsb3Qoc2V1LnEsIG9yZGVyID0gc2FtcGxlLm9yZGVyLCBjb2xzID0gY2x1c3QuY29sb3Vycywgc2h1ZmZsZSA9IFRSVUUsIHJhc3Rlcj1GQUxTRSwgcHQuc2l6ZSA9IDAuMSwgbGFiZWwgPSBGQUxTRSkKCm91dHB1dF9wYXRoIDwtICIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvUHJvamVjdHNfUGFwZXJzL1BoZW5vSUQvRm9yRmlndXJlcy9zY1JOQS8iCgojIyMgRmlndXJlIDZDCgpwZGYocGFzdGUob3V0cHV0X3BhdGgsIlVNQVBzY1JOQXNlcU1lcmdlNC4xMTEwMjAyMi5wZGYiKSx3aWR0aCA9IDcsIGhlaWdodCA9IDQpCkRpbVBsb3Qoc2V1LnEsIG9yZGVyID0gc2FtcGxlLm9yZGVyLCBjb2xzID0gY2x1c3QuY29sb3Vycywgc2h1ZmZsZSA9IFRSVUUsIHJhc3Rlcj1GQUxTRSwgcHQuc2l6ZSA9IDAuMSwgbGFiZWwgPSBGQUxTRSwgbGFiZWwuc2l6ZSA9IDYpICsKICB0aGVtZShsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplPTE2KSwgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemU9MTYpLCAKICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZT0xNiksIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPTE2KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0xNikpCmRldi5vZmYoKQoKCiMjIEZpZ3VyZSBTMjMgcGFuZWwgCgpjZWxsLm9yZGVyIDwtIGMoIkFzdHJvY3l0ZXMiLCJFbmRvdGhlbGlhbCIsIkdsaWEiLCJOUEMiLCJOZXVyb25zIiwiT3RoZXIiLCJSYWRpYWwgR2xpYSIpCmNlbGwub3JkZXIgPC0gcmV2KGNlbGwub3JkZXIpCgojIGNvbG91ciBvcmRlciB0byBtYXRjaCBjZWxsIHR5cGUgb3JkZXIKY2x1c3QuY29sb3VycyA8LSBjKCJjaG9jb2xhdGUxIiwiZGVlcHNreWJsdWUiLCJzdGVlbGJsdWU0IiwicmVkMiIsIm1lZGl1bXB1cnBsZTMiLCJidXJseXdvb2QzIiwgCiAgICAgICAgICAgICAgICAgICAicGluazIiKQoKIApJZGVudHMoc2V1LnEpIDwtICdDZWxsX1R5cGVzJwogICAgICAKIyBkZXNpZ25hdGVkIHRoZSBvcmRlciBvZiB0aGUgc3BsaXRzIGZhY3RvcgpzZXUucSRvcmlnLmlkZW50IDwtIGZhY3Rvcih4ID0gc2V1LnEkb3JpZy5pZGVudCwgbGV2ZWxzID0gYygiQXN0cm9jeXRlcyIsIlJhZGlhbEdsaWEiLCJOZXVyb25zMSIsIk5ldXJvbnMyIikpCgoKRGltUGxvdChzZXUucSwgb3JkZXIgPSBjZWxsLm9yZGVyLCBjb2xzID0gY2x1c3QuY29sb3Vycywgc2h1ZmZsZSA9IFRSVUUsIHJhc3Rlcj1GQUxTRSwgcHQuc2l6ZSA9IDAuMSwgbGFiZWwgPSBGQUxTRSwgc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcsIG5jb2wgPSAyKQoKCgoKcGRmKHBhc3RlKG91dHB1dF9wYXRoLCJVTUFQX21lcmdlX3NwbGl0YnlvcmlnaWRlbnQuMTExMDIwMjIucGRmIiksd2lkdGggPSAxMiwgaGVpZ2h0ID0gNy41KQpEaW1QbG90KHNldS5xLCBvcmRlciA9IGNlbGwub3JkZXIsIGNvbHMgPSBjbHVzdC5jb2xvdXJzLCBzaHVmZmxlID0gVFJVRSwgcmFzdGVyPUZBTFNFLCBwdC5zaXplID0gMC4xLCBsYWJlbCA9IEZBTFNFLCBzcGxpdC5ieSA9ICdvcmlnLmlkZW50JywgbGFiZWwuc2l6ZSA9IDYsIG5jb2wgPSAyKSArCiAgdGhlbWUobGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZT0xNiksIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplPTE2KSwgCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemU9MTYpLCBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0xNiksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9MTYpKQpkZXYub2ZmKCkKCgojIGFsc28gcGxvdCBvbmUgbm90IHNwbGl0IHRvIHNlZSB0aGUgd2hvbGUgdGhpbmcKCgpwZGYocGFzdGUob3V0cHV0X3BhdGgsIlVNQVBfbWVyZ2VfQ2VsbFR5cGVzLjExMTAyMDIyLnBkZiIpLHdpZHRoID0gNi43LCBoZWlnaHQgPSA0LjEpCkRpbVBsb3Qoc2V1LnEsIG9yZGVyID0gY2VsbC5vcmRlciwgY29scyA9IGNsdXN0LmNvbG91cnMsIHNodWZmbGUgPSBUUlVFLCByYXN0ZXI9RkFMU0UsIHB0LnNpemUgPSAwLjEsIGxhYmVsID0gRkFMU0UsIGxhYmVsLnNpemUgPSA2KSArCiAgdGhlbWUobGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZT0xNiksIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplPTE2KSwgCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemU9MTYpLCBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0xNiksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9MTYpKQpkZXYub2ZmKCkKCgoKCmBgYAoKCkZpbmQgQ2x1c3RlciBtYXJrZXJzIHdpdGggYWxsIGNsdXN0ZXJzOgoKYGBge3J9CgpJZGVudHMoc2V1LnEpIDwtICdMZXZlbDMnCgpDbHVzdGVyTWFya2VycyA8LSBGaW5kQWxsTWFya2VycyhzZXUucSkKCnRvcDMgPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSB0b3BfbihuPTMsIHd0ID0gYXZnX2xvZzJGQykKRG9IZWF0bWFwKHNldS5xLCBmZWF0dXJlcyA9IHRvcDMkZ2VuZSwgc2l6ZT0zLCBhbmdsZSA9OTAsIGdyb3VwLmJhci5oZWlnaHQgPSAwLjAyKQoKd3JpdGUuY3N2KG91dHB1dF9wYXRoLCJDbHVzdGVyTWFya2Vyc0xldmVsM2FsbC5jc3YiKQoKCmBgYAoKU2FtZSBjZWxsIHR5cGUgbWFya2VycyBhcmUgb3ZlcmxhcHBpbmcKCgpgYGB7cn0KCiMgZXJyb3IgaW4gZG90IHBsb3QgYmVjYXVzZSBvZiByZXBlYXQgZ2VuZQptYXJrZXIudG9wMyA8LSB1bmlxdWUodG9wMyRnZW5lKQpEb3RQbG90KHNldS5xLCBmZWF0dXJlcyA9IG1hcmtlci50b3AzKSArIFJvdGF0ZWRBeGlzKCkKCiMgUkctTlBDIGlzIHNpbWlsYXIgdG8gbWl4IGFuZCBEQW5ldXJvbnMyCgpgYGAKCk5vdCBhbGwgYXN0cm9zIG92ZXJsYXAgd2l0aCBhc3RybyBtYXJrZXJzIGFuZCBub3QgYWxsIG5ldXJvbnMgb3ZlcmxhcCBuZXVyb25zClRoZSBSRyBvdmVybGFwIHdpdGggYWxsIGtpbmRzIG9mIGNlbGxzLiAKCgpTdWJzZXQgb3V0IHBvcHVsYXRpb25zIGZvciBzb21lIGxhYmVsIHRyYW5zZmVycyBmcm9tIHRoZSBwdWJsaWMgZGF0YS4KClN1YnNldCBvdXQgTmV1cm9ucyAKCmBgYHtyfQoKIyBzdWJzZXQgbmV1cm9ucwojIExldmVsMgpjbHVzdGVyLmlkcyA8LSBjKCJBc3Ryby1SRy1QcmUiLCJOZXVyb25zMS1pbSIsIlJHMS1OUEMiLCJBc3RybzEiLCJOZXVyb25zMi1pbSIsCiAgICAgICAgICAgICAgICAgIkFzdHJvLU5QQyIsIkFzdHJvIiwiTmV1cm9uczMiLCJSRzIiLCJOZXVyb25zNCIsCiAgICAgICAgICAgICAgICAgIkFzdHJvMyIsIk5ldXJvbnM1IiwiUkczLU5QQyIsIk5ldXJvbnM2LURBIiwiTmV1cm9uczctTlBDIiwKICAgICAgICAgICAgICAgICAiTWl4LVJHNCIsIlJHNSIsIkVuZG90aGVsaWFsLU5QQyIsIk5ldXJvbnM4LWluaC1tYXgiLCJOZXVyb25zOS1EQSIsCiAgICAgICAgICAgICAgICAgIk5ldXJvbnMxMC1EQSIsIlJHNiIsIlJHNy1lcGkiLCJOUEMtQXN0cm8iLCJSRy1PUEMiCiAgICAgICAgICAgICAgICAgKQojIExldmVsIDMKY2x1c3Rlci5pZHMgPC0gYygiQXN0cm8xIiwiTmV1cm9uczEiLCJSRzEiLCJBc3RybzIiLCJOZXVyb25zMiIsCiAgICAgICAgICAgICAgICAgIkFzdHJvMyIsIkFzdHJvNCIsIk5ldXJvbnMzIiwiUkcyIiwiTmV1cm9uczQiLAogICAgICAgICAgICAgICAgICJBc3RybzUiLCJOZXVyb25zNSIsIlJHMy1OUEMiLCJEQU5ldXJvbnMxIiwiTmV1cm9uczYiLAogICAgICAgICAgICAgICAgICJNaXgiLCJSRzQiLCJFbmRvdGhlbGlhbC1OUEMiLCJOZXVyb25zOC1pbmgtbWF4IiwiREFOZXVyb25zMiIsCiAgICAgICAgICAgICAgICAgIkRBTmV1cm9uczMiLCJSRzUiLCJSRzYtZXBpIiwiUkc3IiwiUkctT1BDIgogICAgICAgICAgICAgICAgICkKCklkZW50cyhzZXUucSkgPC0gJ0xldmVsMycKbmV1cm9uLmlkIDwtIGMoIk5ldXJvbnMxIiwiTmV1cm9uczIiLCJOZXVyb25zMyIsIk5ldXJvbnM0IiwKICAgICAgICAgICAgICAgICAiTmV1cm9uczUiLCJEQU5ldXJvbnMxIiwiTmV1cm9uczYiLAogICAgICAgICAgICAgICAgICJNaXgiLCJOZXVyb25zOC1pbmgtbWF4IiwiREFOZXVyb25zMiIsCiAgICAgICAgICAgICAgICAgIkRBTmV1cm9uczMiKQojIHdpdGhvdXQgbWl4Cm5ldXJvbi5pZCA8LSBjKCJOZXVyb25zMSIsIk5ldXJvbnMyIiwiTmV1cm9uczMiLCJOZXVyb25zNCIsCiAgICAgICAgICAgICAgICAgIk5ldXJvbnM1IiwiREFOZXVyb25zMSIsIk5ldXJvbnM2IiwKICAgICAgICAgICAgICAgICAiTmV1cm9uczgtaW5oLW1heCIsIkRBTmV1cm9uczIiLAogICAgICAgICAgICAgICAgICJEQU5ldXJvbnMzIikKCm5ldXJvbnMuc3ViIDwtIHN1YnNldChzZXUucSwgaWRlbnRzID0gbmV1cm9uLmlkKQoKdGFibGUobmV1cm9ucy5zdWIkTGV2ZWwzKQoKRGltUGxvdChuZXVyb25zLnN1YiwgbGFiZWwgPSBUUlVFKQoKCgpgYGAKCgpGaW5kIENsdXN0ZXIgbWFya2VycyB0byBkaXN0aW5ndWlzaCBOZXVyb24gc3ViZ3JvdXBzCgpgYGB7cn0KCnRhYmxlKG5ldXJvbnMuc3ViJExldmVsMykKSWRlbnRzKG5ldXJvbnMuc3ViKSA8LSAnTGV2ZWwzJwoKQ2x1c3Rlck1hcmtlcnMgPC0gRmluZEFsbE1hcmtlcnMobmV1cm9ucy5zdWIsIG9ubHkucG9zID0gVFJVRSkKCnRvcDMgPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSB0b3BfbihuPTMsIHd0ID0gYXZnX2xvZzJGQykKRG9IZWF0bWFwKG5ldXJvbnMuc3ViLCBmZWF0dXJlcyA9IHRvcDMkZ2VuZSwgc2l6ZT0zLCBhbmdsZSA9OTAsIGdyb3VwLmJhci5oZWlnaHQgPSAwLjAyKQoKbWFya2VyLnRvcDMgPC0gdW5pcXVlKHRvcDMkZ2VuZSkKRG90UGxvdChuZXVyb25zLnN1YiwgZmVhdHVyZXMgPSBtYXJrZXIudG9wMykgKyBSb3RhdGVkQXhpcygpCgp3cml0ZS5jc3YoQ2x1c3Rlck1hcmtlcnMsIHBhc3RlKG91dHB1dF9wYXRoLCJDbHVzdGVyTWFya2Vyc0xldmVsM05ldXJvblN1Ym5vTWl4LmNzdiIsIHNlcCA9ICIiKSkKCgpgYGAKTmV1cm9ucyAxIGhhcyBvdmVybGFwcGluZyBtYXJrZXJzIHdpdGggREFuZXVyb25zMiAKTmV1cm9ucyAyLCBOZXVyb25zIDQsIE5ldXJvbnMgNiBhcmUgdmVyeSBzaW1pbGFyIGluIHRoZSB0b3AgbWFya2VycyAtIHRoZXNlIGFyZSBhbGwgaW4gdGhlIE5ldXJvbnMxIEZBQ1MgcG9wCkFuZCB0aGUgdG9wIG1hcmtlcnMgYXJlIG1pdG8gZ2VuZXMuCgoKTG9vayBhdCB0aGUgREEgbWFya2VyIGdlbmVzIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGRpZmZlcmVuY2VzIHRoZXJlCkFsc28gc29tZSBuZXVyb25hbCBtYXJrZXJzCgpgYGB7cn0KClBEX3BvdWxpbiA9IGMoIlRIIiwiU0xDNkEzIiwiU0xDMThBMiIsIlNPWDYiLCJORE5GIiwiU05DRyIsIkFMREgxQTEiLCJDQUxCMSIsIlRBQ1IyIiwiU0xDMTdBNiIsIlNMQzMyQTEiLCJPVFgyIiwiR1JQIiwiTFBMIiwiQ0NLIiwiVklQIikKCkRvSGVhdG1hcChuZXVyb25zLnN1YiwgZmVhdHVyZXMgPSBQRF9wb3VsaW4pCkRvdFBsb3QobmV1cm9ucy5zdWIsIGZlYXR1cmVzID0gUERfcG91bGluKSArIFJvdGF0ZWRBeGlzKCkKCgpEb3RQbG90KG5ldXJvbnMuc3ViLCBmZWF0dXJlcyA9ICJUSCIpCkRBLnN1YiA8LSBjKCJDQUxCMSIsIlNPWDYiLCJSQlA0IiwiRERUIikKRG90UGxvdChuZXVyb25zLnN1YiwgZmVhdHVyZXMgPSBEQS5zdWIpICsgUm90YXRlZEF4aXMoKQoKCmBgYAoKREEgbmV1cm9ucyAxIGhhcyB0aGUgbW9zdCBkaWZmZXJlbnQgREEgbWFya2VycyAoVEgsIENBTEIxLCBTTEMxN0E2LCBPVFgyKSAtIGhpZ2hlc3QgQ0FMQjEKREEgbmV1cm9ucyAyIGhhcyBtb3N0IGNlbGxzIGFuZCBoaWdoZXN0IGxldmVsIG9mIFRIIGV4cHJlc3Npb24sIG1vc3QgY2VsbHMgZXhwcmVzc2luZyBTT1gyIGF0IGEgbG93IGxldmVscwpEQSBuZXVyb25zIDMgU0xDMTdBNiwgT1RYMiwgT1RYMiBoaWdoZXN0IAoKCkdldCBtYXJrZXJzIGZvciBqdXN0IERBIG5ldXJvbnMKCmBgYHtyfQoKSWRlbnRzKG5ldXJvbnMuc3ViKSA8LSAnTGV2ZWwzJwpEQS5zdWIgPC0gc3Vic2V0KG5ldXJvbnMuc3ViLCBpZGVudHMgPSBjKCJEQU5ldXJvbnMxIiwiREFOZXVyb25zMiIsIkRBTmV1cm9uczMiKSkKCkNsdXN0ZXJNYXJrZXJzLkRBIDwtIEZpbmRBbGxNYXJrZXJzKERBLnN1Yiwgb25seS5wb3MgPSBUUlVFKQoKdG9wMyA8LSBDbHVzdGVyTWFya2Vycy5EQSAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKG49Mywgd3QgPSBhdmdfbG9nMkZDKQpEb0hlYXRtYXAoREEuc3ViLCBmZWF0dXJlcyA9IHRvcDMkZ2VuZSwgc2l6ZT0zLCBhbmdsZSA9OTAsIGdyb3VwLmJhci5oZWlnaHQgPSAwLjAyKQoKbWFya2VyLnRvcDMgPC0gdW5pcXVlKHRvcDMkZ2VuZSkKRG90UGxvdChuZXVyb25zLnN1YiwgZmVhdHVyZXMgPSBtYXJrZXIudG9wMykgKyBSb3RhdGVkQXhpcygpCkRvdFBsb3QoREEuc3ViLCBmZWF0dXJlcyA9IG1hcmtlci50b3AzKSArIFJvdGF0ZWRBeGlzKCkKCndyaXRlLmNzdihDbHVzdGVyTWFya2VycywgcGFzdGUob3V0cHV0X3BhdGgsIkNsdXN0ZXJNYXJrZXJzREFOZXVyb25zLmNzdiIsIHNlcCA9ICIiKSkKCgpgYGAKR29vZCBtYXJrZXJzIERBMSAtIFJBQjNCCkRBMiAtIFRQQkcgb3IgSEVTMSAgLSBUUEJHIGlzIHByb3Bvc2VkIGFzIGEgREEgbWFya2VyICAoSEVTMSBtaWRicmFpbiBwYXR0ZXJuaW5nKQpEQTMgLSBUUEgxIC0gc2VydG9ub25lcmdpYyBuZXVyb25zIG9yIFRUUiBveGlkYXRpdmUgc3RyZXNzIHByb3RlY3RpdmUKCgpDb21wYXJlIHRoZSBvdGhlciBuZXVyb25zIGFuZCBmaW5kIG1hcmtlcnMKCmBgYHtyfQoKSWRlbnRzKG5ldXJvbnMuc3ViKSA8LSAnTGV2ZWwzJwpuZXVyLnN1YiA8LSBzdWJzZXQobmV1cm9ucy5zdWIsIGlkZW50cyA9IGMoIkRBTmV1cm9uczEiLCJEQU5ldXJvbnMyIiwiREFOZXVyb25zMyIpLCBpbnZlcnQgPSBUUlVFKQp0YWJsZShuZXVyLnN1YiRMZXZlbDMpCkNsdXN0ZXJNYXJrZXJzLm5ldXIgPC0gRmluZEFsbE1hcmtlcnMobmV1ci5zdWIsIG9ubHkucG9zID0gVFJVRSkKCnRvcDMgPC0gQ2x1c3Rlck1hcmtlcnMubmV1ciAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKG49Mywgd3QgPSBhdmdfbG9nMkZDKQpEb0hlYXRtYXAobmV1ci5zdWIsIGZlYXR1cmVzID0gdG9wMyRnZW5lLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIpCgp0b3AzIDwtIENsdXN0ZXJNYXJrZXJzLm5ldXIgJT4lIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSB0b3BfbihuPTMsIHd0ID0gYXZnX2xvZzJGQykKRG9IZWF0bWFwKG5ldXIuc3ViLCBmZWF0dXJlcyA9IHRvcDMkZ2VuZSwgc2l6ZT0zLCBhbmdsZSA9OTAsIGdyb3VwLmJhci5oZWlnaHQgPSAwLjAyKQoKbWFya2VyLnRvcDMgPC0gdW5pcXVlKHRvcDMkZ2VuZSkKI0RvdFBsb3QobmV1cm9ucy5zdWIsIGZlYXR1cmVzID0gbWFya2VyLnRvcDMpICsgUm90YXRlZEF4aXMoKQpEb3RQbG90KG5ldXIuc3ViLCBmZWF0dXJlcyA9IG1hcmtlci50b3AzKSArIFJvdGF0ZWRBeGlzKCkKCndyaXRlLmNzdihDbHVzdGVyTWFya2Vycy5uZXVyLCBwYXN0ZShvdXRwdXRfcGF0aCwiQ2x1c3Rlck1hcmtlcnNvdGhlck5ldXJvbnMuY3N2Iiwgc2VwID0gIiIpKQoKCmBgYAoKCkhhdmUgYSBsb29rIGF0IHNvbWUgbWFya2VycyBpbiBmZWF0dXJlIHBsb3RzCgpgYGB7cn0KCkRpbVBsb3QobmV1ci5zdWIpCkZlYXR1cmVQbG90KG5ldXIuc3ViLCBmZWF0dXJlcyA9IGMoIlJVTlgxVDEiLCAiQVNDTDEiLCJHQUQxIiwiR1JJTjJBIiwiR1JJQTIiLCJWQU1QMiIpKQoKCm1hdF9uZXVyb24gPSBjKCJSQkZPWDMiLCJTWVAiLCJETEc0NSIsIlZBTVAxIiwiVkFNUDIiLCJUVUJCMyIsIlNZVDEiLCJCU04iLCJIT01FUjEiLCJTTEMxN0E2IikgCiMgTmV1TiBpcyBGT1gzIC0gUkJGT1gzCiMgUFNEOTUgYWxzbyBTUC05MCBvciBETEc0CiMgVkdMVVQyIGlzIFNMQzE3QTYKI0RvSGVhdG1hcChzZXUucSwgZmVhdHVyZXMgPSBtYXRfbmV1cm9uLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIsIGdyb3VwLmJ5ID0gJ1JOQV9zbm5fcmVzLjAuNicpCiMgY2x1c3RlciA0IGFsc28gc2hvdyBtYXR1cmUgbmV1cm9uIG1hcmtlcnMKRG90UGxvdChuZXVyLnN1YiwgZmVhdHVyZXMgPSBtYXRfbmV1cm9uKStSb3RhdGVkQXhpcygpCiMgZXhjaXRhdG9yeSBuZXVyb24gbWFya2VycwpleCA9IGMoIkdSSUEyIiwiR1JJQTEiLCJHUklBNCIsIkdSSU4xIiwiR1JJTjJCIiwiR1JJTjJBIiwiR1JJTjNBIiwiR1JJTjMiLCJHUklQMSIsIkNBTUsyQSIpCiNEb0hlYXRtYXAoc2V1LnEsIGZlYXR1cmVzID0gZXgsIHNpemU9MywgYW5nbGUgPTkwLCBncm91cC5iYXIuaGVpZ2h0ID0gMC4wMiwgZ3JvdXAuYnkgPSAnUk5BX3Nubl9yZXMuMC42JykKRG90UGxvdChuZXVyLnN1YiwgZmVhdHVyZXMgPSBleCkrUm90YXRlZEF4aXMoKQojIGluaGliaXRvcnkgbmV1cm9uIG1hcmtlcnMKaW5oID0gYygiR0FEMSIsIkdBRDIiLCAiR0FUMSIsIlBWQUxCIiwiR0FCUjIiLCJHQUJSMSIsIkdCUlIxIiwiR0FCUkIyIiwiR0FCUkIxIiwiR0FCUkIzIiwiR0FCUkE2IiwiR0FCUkExIiwiR0FCUkE0IiwiVFJBSzIiKQoKRG90UGxvdChuZXVyLnN1YiwgZmVhdHVyZXMgPSBpbmgpICsgUm90YXRlZEF4aXMoKQoKCgoKCgpgYGAKCgpJJ2xsIHNlcGFyYXRlIG91dCBOZXVyb25zIDIsNCw2CgpgYGB7cn0KCklkZW50cyhuZXVyb25zLnN1YikgPC0gJ0xldmVsMycKbmV1cm9uczEuc3ViIDwtIHN1YnNldChuZXVyb25zLnN1YiwgaWRlbnRzID0gYygiTmV1cm9uczIiLCJOZXVyb25zNCIsIk5ldXJvbnM2IikpCgpDbHVzdGVyTWFya2Vycy5uMSA8LSBGaW5kQWxsTWFya2VycyhuZXVyb25zMS5zdWIsIG9ubHkucG9zID0gVFJVRSkKCnRvcDMgPC0gQ2x1c3Rlck1hcmtlcnMubjEgJT4lIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSB0b3BfbihuPTMsIHd0ID0gYXZnX2xvZzJGQykKRG9IZWF0bWFwKG5ldXJvbnMxLnN1YiwgZmVhdHVyZXMgPSB0b3AzJGdlbmUsIHNpemU9MywgYW5nbGUgPTkwLCBncm91cC5iYXIuaGVpZ2h0ID0gMC4wMikKCm1hcmtlci50b3AzIDwtIHVuaXF1ZSh0b3AzJGdlbmUpCkRvdFBsb3QobmV1cm9uczEuc3ViLCBmZWF0dXJlcyA9IG1hcmtlci50b3AzKSArIFJvdGF0ZWRBeGlzKCkKRG90UGxvdChEQS5zdWIsIGZlYXR1cmVzID0gbWFya2VyLnRvcDMpICsgUm90YXRlZEF4aXMoKQoKd3JpdGUuY3N2KENsdXN0ZXJNYXJrZXJzLm4xLCBwYXN0ZShvdXRwdXRfcGF0aCwiQ2x1c3Rlck1hcmtlcnNOZXVyb25zMjQ2LmNzdiIsIHNlcCA9ICIiKSkKCmBgYAoKYGBge3J9CgpJZGVudHMobmV1ci5zdWIpIDwtICdMZXZlbDMnCm5ldXJvbnMyLnN1YiA8LSBzdWJzZXQobmV1ci5zdWIsIGlkZW50cyA9IGMoIk5ldXJvbnMyIiwiTmV1cm9uczQiLCJOZXVyb25zNiIpLCBpbnZlcnQgPSBUUlVFKQoKQ2x1c3Rlck1hcmtlcnMubjIgPC0gRmluZEFsbE1hcmtlcnMobmV1cm9uczIuc3ViLCBvbmx5LnBvcyA9IFRSVUUpCgp0b3AzIDwtIENsdXN0ZXJNYXJrZXJzLm4yICU+JSBncm91cF9ieShjbHVzdGVyKSAlPiUgdG9wX24obj0zLCB3dCA9IGF2Z19sb2cyRkMpCkRvSGVhdG1hcChuZXVyb25zMi5zdWIsIGZlYXR1cmVzID0gdG9wMyRnZW5lLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIpCgptYXJrZXIudG9wMyA8LSB1bmlxdWUodG9wMyRnZW5lKQpEb3RQbG90KG5ldXJvbnMyLnN1YiwgZmVhdHVyZXMgPSBtYXJrZXIudG9wMykgKyBSb3RhdGVkQXhpcygpCgoKd3JpdGUuY3N2KENsdXN0ZXJNYXJrZXJzLm4yLCBwYXN0ZShvdXRwdXRfcGF0aCwiQ2x1c3Rlck1hcmtlcnNOZXVyb25zMTM1OC5jc3YiLCBzZXAgPSAiIikpCgoKYGBgCgpMb29rIGF0IHRoZSBHTyB0ZXJtcyB3aGVuIHNlcGFyYXRpbmcgb3V0IHRoZSBuZXVyb24gc3VidHlwZXMKCmBgYHtyfQpsaWJyYXJ5KGVucmljaFIpCgpzZXRFbnJpY2hyU2l0ZSgiRW5yaWNociIpICMgSHVtYW4gZ2VuZXMKIyBsaXN0IG9mIGFsbCB0aGUgZGF0YWJhc2VzCgojIGxpYmFyaWVzIHdpdGggY2VsbCB0eXBlcwojZGJzIDwtIGxpc3RFbnJpY2hyRGJzKCkKI2RicwpkYiA8LSBjKCdHT19DZWxsdWxhcl9Db21wb25lbnRfMjAxNScsJ0dPX0Jpb2xvZ2ljYWxfUHJvY2Vzc18yMDE1JywKICAgICAgICAnQ2VsbE1hcmtlcl9BdWdtZW50ZWRfMjAyMScsJ0F6aW11dGhfQ2VsbF9UeXBlc18yMDIxJykKCgoKZ3JvdXAgPSAiTmV1cm9uczMiCgojZm9yKGdyb3VwIGluIGdyb3VwLmxpc3QpewpwcmludChncm91cCkKVXAubGlzdCA8LSBDbHVzdGVyTWFya2Vycy5uMiAlPiUgZmlsdGVyKGNsdXN0ZXIgPT0gZ3JvdXAgJiBhdmdfbG9nMkZDID4gMCkKZ2VuZXMgPC0gVXAubGlzdCRnZW5lCgpFciA8LSBlbnJpY2hyKGdlbmVzLCBkYXRhYmFzZXMgPSBkYikKcHJpbnQocGxvdEVucmljaChFcltbMV1dLCBzaG93VGVybXMgPSAyMCwgbnVtQ2hhciA9IDQwLCB5ID0gIkNvdW50Iiwgb3JkZXJCeSA9ICJQLnZhbHVlIikpCnByaW50KHBsb3RFbnJpY2goRXJbWzJdXSwgc2hvd1Rlcm1zID0gMjAsIG51bUNoYXIgPSA0MCwgeSA9ICJDb3VudCIsIG9yZGVyQnkgPSAiUC52YWx1ZSIpKQpwcmludChwbG90RW5yaWNoKEVyW1szXV0sIHNob3dUZXJtcyA9IDIwLCBudW1DaGFyID0gNDAsIHkgPSAiQ291bnQiLCBvcmRlckJ5ID0gIlAudmFsdWUiKSkKcHJpbnQocGxvdEVucmljaChFcltbNF1dLCBzaG93VGVybXMgPSAyMCwgbnVtQ2hhciA9IDQwLCB5ID0gIkNvdW50Iiwgb3JkZXJCeSA9ICJQLnZhbHVlIikpCgp0LkdPY2VsbCA8LSBFcltbMV1dICU+JSBzZWxlY3QoVGVybSwgR2VuZXMsIENvbWJpbmVkLlNjb3JlKQpwcmludCh0LkdPY2VsbCkKCnQuR09iaW8gPC0gRXJbWzJdXSAlPiUgc2VsZWN0KFRlcm0sIEdlbmVzLCBDb21iaW5lZC5TY29yZSkKcHJpbnQodC5HT2JpbykKCnQuQ2VsbE1hcmtlciA8LSBFcltbM11dICU+JSBzZWxlY3QoVGVybSwgR2VuZXMsIENvbWJpbmVkLlNjb3JlKQpwcmludCh0LkNlbGxNYXJrZXIpCgoKdC5BemkgPC0gRXJbWzRdXSAlPiUgc2VsZWN0KFRlcm0sIEdlbmVzLCBDb21iaW5lZC5TY29yZSkKcHJpbnQodC5BemkpCiN9CgoKCmBgYAoKCgpDb21wYXJlIHRoZSBuZXVyb25zMSBncm91cHMgdG8gdGhlIG5ldXJvbnMyIGdyb3VwcwoKYGBge3J9CgpJZGVudHMobmV1cm9ucy5zdWIpIDwtICdMZXZlbDMnCkNsdXN0ZXJNYXJrZXJzIDwtIEZpbmRNYXJrZXJzKG5ldXJvbnMuc3ViLCBpZGVudC4xID0gYygiTmV1cm9uczEiLCJOZXVyb25zMyIsIk5ldXJvbnM1IiwiTmV1cm9uczgtaW5oLW1heCIpLCBpZGVudC4yID0gYygiTmV1cm9uczIiLCJOZXVyb25zNCIsIk5ldXJvbnM2IikpCgp1cC5uMSA8LSBDbHVzdGVyTWFya2VycyAlPiUgdG9wX24obj01LCB3dCA9IGF2Z19sb2cyRkMpCnVwLm4yIDwtIENsdXN0ZXJNYXJrZXJzICU+JSB0b3BfbihuPS01LCB3dCA9IGF2Z19sb2cyRkMpCgoKRG9IZWF0bWFwKG5ldXJvbnMuc3ViLCBmZWF0dXJlcyA9IGMocm93bmFtZXModXAubjEpLCByb3duYW1lcyh1cC5uMikpLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIpCgpEb3RQbG90KG5ldXJvbnMuc3ViLCBmZWF0dXJlcyA9IGMocm93bmFtZXModXAubjEpLCByb3duYW1lcyh1cC5uMikpKSArIFJvdGF0ZWRBeGlzKCkKCgp3cml0ZS5jc3YoQ2x1c3Rlck1hcmtlcnMsIHBhc3RlKG91dHB1dF9wYXRoLCJDbHVzdGVyTWFya2Vyc05ldXJvbnMxdnMyLmNzdiIsIHNlcCA9ICIiKSkKCkRvdFBsb3QobmV1ci5zdWIsIGZlYXR1cmVzID0gYygiQ0QyNCIsICJOQ0FNMSIpKSArIFJvdGF0ZWRBeGlzKCkKCiMjIyBuZXVyb25zIDEgYW5kIDIgbXVzdCBiZSBtaXhlZCB1cCBpbiB0aGUgc29ydGluZwojIE5lZWRzIHRvIGJlIG5ldXJvbnMgQ0QyNCBhbmQgbmV1cm9ucyBDRDU2IAojIHdoZXJlIG5ldXJvbnMyIGlzIHRoZSBDRDI0IHBvcHVsYXRpb24KCgpgYGAKCkNoZWNrIHRoZSBHTyB0ZXJtcyBhbmQgY2VsbHR5cGUgbGlicmFyaWVzIGZvciB0aGUgdHdvIGdyb3VwcyBvZiBuZXVyb25zCgpgYGB7cn0KbGlicmFyeShlbnJpY2hSKQoKc2V0RW5yaWNoclNpdGUoIkVucmljaHIiKSAjIEh1bWFuIGdlbmVzCiMgbGlzdCBvZiBhbGwgdGhlIGRhdGFiYXNlcwoKIyBsaWJhcmllcyB3aXRoIGNlbGwgdHlwZXMKI2RicyA8LSBsaXN0RW5yaWNockRicygpCiNkYnMKZGIgPC0gYygnR09fQ2VsbHVsYXJfQ29tcG9uZW50XzIwMTUnLCdHT19CaW9sb2dpY2FsX1Byb2Nlc3NfMjAxNScsCiAgICAgICAgJ0NlbGxNYXJrZXJfQXVnbWVudGVkXzIwMjEnLCdBemltdXRoX0NlbGxfVHlwZXNfMjAyMScpCgoKIyB1cCByZWd1bGF0ZWQgaW4gTmV1cm9ucyAyIChDRDI0IGhpZ2gpCgpVcC5saXN0IDwtIENsdXN0ZXJNYXJrZXJzICU+JSBmaWx0ZXIoYXZnX2xvZzJGQyA+IDApCmdlbmVzIDwtIHJvd25hbWVzKFVwLmxpc3QpCgoKIyBOZXVyb25zIDEgKENEMjQgbG93KQpkb3duLmxpc3QgPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGZpbHRlcihhdmdfbG9nMkZDIDwgMCkKZ2VuZXMgPC0gcm93bmFtZXMoZG93bi5saXN0KQoKRXIgPC0gZW5yaWNocihnZW5lcywgZGF0YWJhc2VzID0gZGIpCnByaW50KHBsb3RFbnJpY2goRXJbWzFdXSwgc2hvd1Rlcm1zID0gMjAsIG51bUNoYXIgPSA0MCwgeSA9ICJDb3VudCIsIG9yZGVyQnkgPSAiUC52YWx1ZSIpKQpwcmludChwbG90RW5yaWNoKEVyW1syXV0sIHNob3dUZXJtcyA9IDIwLCBudW1DaGFyID0gNDAsIHkgPSAiQ291bnQiLCBvcmRlckJ5ID0gIlAudmFsdWUiKSkKcHJpbnQocGxvdEVucmljaChFcltbM11dLCBzaG93VGVybXMgPSAyMCwgbnVtQ2hhciA9IDQwLCB5ID0gIkNvdW50Iiwgb3JkZXJCeSA9ICJQLnZhbHVlIikpCnByaW50KHBsb3RFbnJpY2goRXJbWzRdXSwgc2hvd1Rlcm1zID0gMjAsIG51bUNoYXIgPSA0MCwgeSA9ICJDb3VudCIsIG9yZGVyQnkgPSAiUC52YWx1ZSIpKQoKdC5HT2NlbGwgPC0gRXJbWzFdXSAlPiUgc2VsZWN0KFRlcm0sIEdlbmVzLCBDb21iaW5lZC5TY29yZSkKcHJpbnQodC5HT2NlbGwpCnQuR09iaW8gPC0gRXJbWzJdXSAlPiUgc2VsZWN0KFRlcm0sIEdlbmVzLCBDb21iaW5lZC5TY29yZSkKcHJpbnQodC5HT2JpbykKdC5DZWxsTWFya2VyIDwtIEVyW1szXV0gJT4lIHNlbGVjdChUZXJtLCBHZW5lcywgQ29tYmluZWQuU2NvcmUpCnByaW50KHQuQ2VsbE1hcmtlcikKdC5BemkgPC0gRXJbWzRdXSAlPiUgc2VsZWN0KFRlcm0sIEdlbmVzLCBDb21iaW5lZC5TY29yZSkKcHJpbnQodC5BemkpCgoKYGBgCgpDb21wYXJlIGRpcmVjdGx5IE5ldXJvbnMgMSAobG93IENEMjQpIHdpdGggTmV1cm9ucyAyIChoaWdoIENEMjQpCkZvciBERUcgYW5kIGNlbGwgdHlwZSBwcmVkaWN0aW9ucwoKYGBge3J9CgpJZGVudHMobmV1cm9ucy5zdWIpIDwtICdvcmlnLmlkZW50JwpuZXVyb25zLjEuMiA8LSBzdWJzZXQobmV1cm9ucy5zdWIsIGlkZW50cyA9IGMoIk5ldXJvbnMxIiwgIk5ldXJvbnMyIikpIAp0YWJsZShuZXVyb25zLjEuMiRMZXZlbDMsbmV1cm9ucy4xLjIkb3JpZy5pZGVudCkKCiMgcmVuYW1lIElkZW50cyB0byBtYWtlIDMgZ3JvdXBzIGFuZCB0aGVuIGRvIERHRSBhbmQgcHJlZGljdGlvbnMgb24gdGhvc2UgZ3JvdXBzCiMgbm90ZSB0aGUgcHJlZGljdGlvbiBhcmUgYWNyb3NzIGFsbCB0aGUgY2VsbCB0eXBlcwoKIyByZXByb2Nlc3MgCnNldSA8LSBuZXVyb25zLjEuMgpzZXUgPC0gTm9ybWFsaXplRGF0YShzZXUsIG5vcm1hbGl6YXRpb24ubWV0aG9kID0gIkxvZ05vcm1hbGl6ZSIsIHNjYWxlLmZhY3RvciA9IDEwMDAwKQpzZXUgPC0gRmluZFZhcmlhYmxlRmVhdHVyZXMoc2V1LCBzZWxlY3Rpb24ubWV0aG9kID0gInZzdCIsIG5mZWF0dXJlcyA9IDIwMDApCnNldSA8LSBTY2FsZURhdGEoc2V1KQpzZXUucSA8LSBSdW5QQ0Eoc2V1KQoKRGltUGxvdChzZXUucSkKCmBgYApgYGB7cn0KCklkZW50cyhzZXUucSkgPC0gJ0xldmVsMycKCmNsdXN0ZXIuaWRzIDwtIGMoIk5ldXJvbnMtQ0QyNCIsIk5ldXJvbnMiLCJOZXVyb25zLUNEMjQiLCJOZXVyb25zIiwKICAgICAgICAgICAgICAgICAiTmV1cm9ucy1DRDI0IiwiREFOIiwKICAgICAgICAgICAgICAgICAiTmV1cm9ucyIsIk5ldXJvbnMtQ0QyNCIsIkRBTiIsIkRBTiIKICAgICAgICAgICAgICAgICApCgpuYW1lcyhjbHVzdGVyLmlkcykgPC0gbGV2ZWxzKHNldS5xKQpzZXUucSA8LSBSZW5hbWVJZGVudHMoc2V1LnEsIGNsdXN0ZXIuaWRzKQpzZXUucSROZXVyb25Hcm91cHMgPC0gSWRlbnRzKHNldS5xKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdMZXZlbDMnLCBzcGxpdC5ieSA9ICdvcmlnLmlkZW50JykKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnTmV1cm9uR3JvdXBzJywgc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcpCgpgYGAKClNlZSB0aGUgcHJlZGljdGVkIG1hcmtlcnMKCmBgYHtyfQoKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnTUJPQVNUMjMucHJlZCcsIHNwbGl0LmJ5ID0gJ29yaWcuaWRlbnQnKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdNQk9BSVcucHJlZCcsIHNwbGl0LmJ5ID0gJ29yaWcuaWRlbnQnKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdBSVc2MC5wcmVkJywgc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gJ0JoYS5taWQuc3RyaS5wcmVkJywgc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcpCkRpbVBsb3Qoc2V1LnEsIGdyb3VwLmJ5ID0gJ2RhLnByZWQnLCBzcGxpdC5ieSA9ICdvcmlnLmlkZW50JykKRGltUGxvdChzZXUucSwgZ3JvdXAuYnkgPSAnSy5wcmVkJywgc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcpCgoKYGBgCgoKRG91YmxlIGNoZWNrIGFuZCByZW5hbWUgdGhlIHR3byBuZXVyb24gcG9wdWxhdGlvbnMKCmBgYHtyfQoKRmVhdHVyZVBsb3QobmV1cm9ucy5zdWIsIGZlYXR1cmVzID0gYygiQ0QyNCIsIk5DQU0xIiwgIk1BUDIiLCAiVFVCQjMiKSwgc3BsaXQuYnkgPSAib3JpZy5pZGVudCIpCgpgYGAKCgoKTG9vayBhdCBjZWxsIG1hcmtlciBsaWJyYXJpZXMgYW5kIEdPIHRlcm1zIGluIGFsbCBuZXVyb25zIGNvbnRyYXN0cwoKCmBgYHtyfQoKbGlicmFyeShlbnJpY2hSKQoKc2V0RW5yaWNoclNpdGUoIkVucmljaHIiKSAjIEh1bWFuIGdlbmVzCiMgbGlzdCBvZiBhbGwgdGhlIGRhdGFiYXNlcwoKIyBsaWJhcmllcyB3aXRoIGNlbGwgdHlwZXMKZGJzIDwtIGxpc3RFbnJpY2hyRGJzKCkKZGJzCmRiIDwtIGMoJ0dPX0NlbGx1bGFyX0NvbXBvbmVudF8yMDE1JywnR09fQmlvbG9naWNhbF9Qcm9jZXNzXzIwMTUnLAogICAgICAgICdDZWxsTWFya2VyX0F1Z21lbnRlZF8yMDIxJywnQXppbXV0aF9DZWxsX1R5cGVzXzIwMjEnKQoKIyBlbnJpY2hyKGdlbmVzLCBkYXRhYmFzZXMgPSBOVUxMKQoKZ3JvdXAubGlzdCA8LSBhcy5jaGFyYWN0ZXIodW5pcXVlKENsdXN0ZXJNYXJrZXJzJGNsdXN0ZXIpKQoKIyB0cnkgdG8gcnVuIGEgbG9vcCAKIyB0aGUgbG9vcCBydW5zIGJ1dCBpdCdzIGhhcmQgdG8gdGVsbCB0aGUgb3V0cHV0IAojIG5lZWQgdG8gcnVuIG9uZSBhdCBhIHRpbWUKWzFdICJOZXVyb25zMSIgICAgICAgICAiTmV1cm9uczIiICAgICAgICAgIk5ldXJvbnMzIiAgICAgICAgICJOZXVyb25zNCIgICAgICAgICAiTmV1cm9uczUiICAgICAgICAKIFs2XSAiREFOZXVyb25zMSIgICAgICAgIk5ldXJvbnM2IiAgICAgICAgICJNaXgiICAgICAgICAgICAgICAiTmV1cm9uczgtaW5oLW1heCIgIkRBTmV1cm9uczIiICAgICAgClsxMV0gIkRBTmV1cm9uczMiIAoKCmdyb3VwLmxpc3QgPSAiREFOZXVyb25zMyIKCmZvcihncm91cCBpbiBncm91cC5saXN0KXsKcHJpbnQoZ3JvdXApClVwLmxpc3QgPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGZpbHRlcihjbHVzdGVyID09IGdyb3VwICYgYXZnX2xvZzJGQyA+IDApCmdlbmVzIDwtIFVwLmxpc3QkZ2VuZQoKRXIgPC0gZW5yaWNocihnZW5lcywgZGF0YWJhc2VzID0gZGIpCnByaW50KHBsb3RFbnJpY2goRXJbWzFdXSwgc2hvd1Rlcm1zID0gMjAsIG51bUNoYXIgPSA0MCwgeSA9ICJDb3VudCIsIG9yZGVyQnkgPSAiUC52YWx1ZSIpKQpwcmludChwbG90RW5yaWNoKEVyW1syXV0sIHNob3dUZXJtcyA9IDIwLCBudW1DaGFyID0gNDAsIHkgPSAiQ291bnQiLCBvcmRlckJ5ID0gIlAudmFsdWUiKSkKcHJpbnQocGxvdEVucmljaChFcltbM11dLCBzaG93VGVybXMgPSAyMCwgbnVtQ2hhciA9IDQwLCB5ID0gIkNvdW50Iiwgb3JkZXJCeSA9ICJQLnZhbHVlIikpCnByaW50KHBsb3RFbnJpY2goRXJbWzRdXSwgc2hvd1Rlcm1zID0gMjAsIG51bUNoYXIgPSA0MCwgeSA9ICJDb3VudCIsIG9yZGVyQnkgPSAiUC52YWx1ZSIpKQoKdC5HT2NlbGwgPC0gRXJbWzFdXSAlPiUgc2VsZWN0KFRlcm0sIEdlbmVzLCBDb21iaW5lZC5TY29yZSkKcHJpbnQodC5HT2NlbGwpCgp0LkdPYmlvIDwtIEVyW1syXV0gJT4lIHNlbGVjdChUZXJtLCBHZW5lcywgQ29tYmluZWQuU2NvcmUpCnByaW50KHQuR09iaW8pCgp0LkNlbGxNYXJrZXIgPC0gRXJbWzNdXSAlPiUgc2VsZWN0KFRlcm0sIEdlbmVzLCBDb21iaW5lZC5TY29yZSkKcHJpbnQodC5DZWxsTWFya2VyKQoKCnQuQXppIDwtIEVyW1s0XV0gJT4lIHNlbGVjdChUZXJtLCBHZW5lcywgQ29tYmluZWQuU2NvcmUpCnByaW50KHQuQXppKQp9CgoKCmBgYAoKCgpMYWJlbCB0cmFuc2ZlciBLYW1hdGggREEgbmV1cm9ucyBpbiBOZXVyb25zIFN1YnNldCAoaGFzIGJvdGggREEgbmV1cm9ucyBhbmQgT3RoZXJzIGFzIHByZWRpY3RlZCBieSBBSVcwMDIgbGFiZWwgdHJhbnNmZXJzKQoKYGBge3J9CgoKc2V1LnIgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvTWFjb3Nrb19EYXRhL0RBc3ViZ3JvdXBzX3Byb2Nlc3NlZC5SZHMiKQoKSWRlbnRzKHNldS5yKSA8LSAiQ2VsbF9TdWJ0eXBlIgpJZGVudHMobmV1cm9ucy5zdWIpIDwtICJMZXZlbDMiCgojIGZpbmQgdGhlIHJlZmVyZW5jZSBhbmNob3JzCmFuY2hvcnMgPC0gRmluZFRyYW5zZmVyQW5jaG9ycyhyZWZlcmVuY2UgPSBzZXUuciwgcXVlcnkgPSBuZXVyb25zLnN1YiwgZGltcyA9IDE6MjUpCnByaW50KCJnZXR0aW5nIHByZWRpY3Rpb25zIikKcHJlZGljdGlvbnMgPC0gVHJhbnNmZXJEYXRhKGFuY2hvcnNldCA9IGFuY2hvcnMsIHJlZmRhdGEgPSBzZXUuciRDZWxsX1N1YnR5cGUsIGsud2VpZ2h0ID0gMzApCm5ldXJvbnMuc3ViIDwtIEFkZE1ldGFEYXRhKG5ldXJvbnMuc3ViLCBwcmVkaWN0aW9ucyRwcmVkaWN0ZWQuaWQsIGNvbC5uYW1lID0gImRhLnByZWQiKQpuZXVyb25zLnN1YiA8LSBBZGRNZXRhRGF0YShuZXVyb25zLnN1YiwgcHJlZGljdGlvbnMkcHJlZGljdGlvbi5zY29yZS5tYXgsIGNvbC5uYW1lID0gInByZWRpY3Rpb24uc2NvcmUubWF4IikKCnRhYmxlKG5ldXJvbnMuc3ViJGRhLnByZWQpCgpuZXVyb25zLnN1YiRkYS5wcmVkLnRocmVzaCA8LSBpZmVsc2UobmV1cm9ucy5zdWIkcHJlZGljdGlvbi5zY29yZS5tYXggPiAwLjU1LCBuZXVyb25zLnN1YiRkYS5wcmVkLCAibm9uZSIpCgpEaW1QbG90KG5ldXJvbnMuc3ViLCBncm91cC5ieSA9ICdkYS5wcmVkLnRocmVzaCcpCnRhYmxlKG5ldXJvbnMuc3ViJGRhLnByZWQudGhyZXNoKQoKCgoKCgpgYGAKCgpTZWUgdGhlIHByZWRpY3Rpb25zIGZyb20gS2FtYXRoIERBIHN1YnR5cGVzCgpgYGB7cn0KCiNEQSBzdWJ0eXBlcwoKIyBhbGwgcHJlZGljaXRpb25zCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUobmV1cm9ucy5zdWIkTGV2ZWwzLCBuZXVyb25zLnN1YiRkYS5wcmVkKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCgp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wIDwtIHRvcC5wcmVkLmNlbGx0eXBlW29yZGVyKHRvcC5wcmVkLmNlbGx0eXBlJFZhcjEsLXRvcC5wcmVkLmNlbGx0eXBlJEZyZXEpLF0Kcm93Lm5hbWVzKGRmLnRvcCkgPC0gTlVMTApkZi50b3AkSSA8LSByb3cubmFtZXMoZGYudG9wKQoKIyB3aXRoIHRocmVzaG9sZAp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKG5ldXJvbnMuc3ViJExldmVsMywgbmV1cm9ucy5zdWIkZGEucHJlZC50aHJlc2gpKQp0LmxhYmxlcyRGcmVxIDwtIGFzLmRvdWJsZSh0LmxhYmxlcyRGcmVxKQpnZ3Bsb3QodC5sYWJsZXMsIGFlcyh5ID0gRnJlcSwgeCA9IFZhcjEsIGZpbGwgPSBWYXIyKSkgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQ9ICJpZGVudGl0eSIpICsgUm90YXRlZEF4aXMoKSAKCnRvcC5wcmVkLmNlbGx0eXBlIDwtIGFzLmRhdGEuZnJhbWUodC5sYWJsZXMgICU+JSBncm91cF9ieShWYXIxKSAgJT4lIHRvcF9uKDIsIEZyZXEpKQpkZi50b3AudGhyZXNoIDwtIHRvcC5wcmVkLmNlbGx0eXBlW29yZGVyKHRvcC5wcmVkLmNlbGx0eXBlJFZhcjEsLXRvcC5wcmVkLmNlbGx0eXBlJEZyZXEpLF0Kcm93Lm5hbWVzKGRmLnRvcC50aHJlc2gpIDwtIE5VTEwKZGYudG9wLnRocmVzaCRJIDwtIHJvdy5uYW1lcyhkZi50b3AudGhyZXNoKQoKCmBgYAoKTGFiZWwgZnJvbSBCaGFkYXJpIGFkdWx0IGJyYWluIC1hbGwgYnJhaW4gZG93biBzYW1wbGVkCgpgYGB7cn0KCnNldS5yIDwtIHJlYWRSRFMoIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL1B1YmxpY0RhdGEvS2Fyb2xpbnNraV9EZXZGb3JlYnJhaW5fZG93bnNhbXBsZV9MZXZlbDEuUkRTIikKCklkZW50cyhzZXUucikgPC0gIkxldmVsMSIKSWRlbnRzKG5ldXJvbnMuc3ViKSA8LSAiTGV2ZWwzIgoKIyBmaW5kIHRoZSByZWZlcmVuY2UgYW5jaG9ycwphbmNob3JzIDwtIEZpbmRUcmFuc2ZlckFuY2hvcnMocmVmZXJlbmNlID0gc2V1LnIsIHF1ZXJ5ID0gbmV1cm9ucy5zdWIsIGRpbXMgPSAxOjI1KQpwcmludCgiZ2V0dGluZyBwcmVkaWN0aW9ucyIpCnByZWRpY3Rpb25zIDwtIFRyYW5zZmVyRGF0YShhbmNob3JzZXQgPSBhbmNob3JzLCByZWZkYXRhID0gc2V1LnIkTGV2ZWwxLCBrLndlaWdodCA9IDUwKQpuZXVyb25zLnN1YiA8LSBBZGRNZXRhRGF0YShuZXVyb25zLnN1YiwgcHJlZGljdGlvbnMkcHJlZGljdGVkLmlkLCBjb2wubmFtZSA9ICJCaGEucHJlZCIpCm5ldXJvbnMuc3ViIDwtIEFkZE1ldGFEYXRhKG5ldXJvbnMuc3ViLCBwcmVkaWN0aW9ucyRwcmVkaWN0aW9uLnNjb3JlLm1heCwgY29sLm5hbWUgPSAicHJlZGljdGlvbi5zY29yZS5tYXgiKQoKdGFibGUobmV1cm9ucy5zdWIkQmhhLnByZWQpCgpuZXVyb25zLnN1YiRCaGEucHJlZC50aHJlc2ggPC0gaWZlbHNlKG5ldXJvbnMuc3ViJHByZWRpY3Rpb24uc2NvcmUubWF4ID4gMC44MCwgbmV1cm9ucy5zdWIkQmhhLnByZWQsICJub25lIikKCkRpbVBsb3QobmV1cm9ucy5zdWIsIGdyb3VwLmJ5ID0gJ0JoYS5wcmVkLnRocmVzaCcpCnRhYmxlKG5ldXJvbnMuc3ViJEJoYS5wcmVkLnRocmVzaCkKCgoKYGBgCgpgYGB7cn0KCiNXaG9sZSBhZHVsdCBicmFpbiAKCiMgYWxsIHByZWRpY2l0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKG5ldXJvbnMuc3ViJExldmVsMywgbmV1cm9ucy5zdWIkQmhhLnByZWQpKQp0LmxhYmxlcyRGcmVxIDwtIGFzLmRvdWJsZSh0LmxhYmxlcyRGcmVxKQpnZ3Bsb3QodC5sYWJsZXMsIGFlcyh5ID0gRnJlcSwgeCA9IFZhcjEsIGZpbGwgPSBWYXIyKSkgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQ9ICJpZGVudGl0eSIpICsgUm90YXRlZEF4aXMoKSAKCnRvcC5wcmVkLmNlbGx0eXBlIDwtIGFzLmRhdGEuZnJhbWUodC5sYWJsZXMgICU+JSBncm91cF9ieShWYXIxKSAgJT4lIHRvcF9uKDIsIEZyZXEpKQpkZi50b3AgPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wKSA8LSBOVUxMCmRmLnRvcCRJIDwtIHJvdy5uYW1lcyhkZi50b3ApCgojIHdpdGggdGhyZXNob2xkCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUobmV1cm9ucy5zdWIkTGV2ZWwzLCBuZXVyb25zLnN1YiRCaGEucHJlZC50aHJlc2gpKQp0LmxhYmxlcyRGcmVxIDwtIGFzLmRvdWJsZSh0LmxhYmxlcyRGcmVxKQpnZ3Bsb3QodC5sYWJsZXMsIGFlcyh5ID0gRnJlcSwgeCA9IFZhcjEsIGZpbGwgPSBWYXIyKSkgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQ9ICJpZGVudGl0eSIpICsgUm90YXRlZEF4aXMoKSAKCnRvcC5wcmVkLmNlbGx0eXBlIDwtIGFzLmRhdGEuZnJhbWUodC5sYWJsZXMgICU+JSBncm91cF9ieShWYXIxKSAgJT4lIHRvcF9uKDIsIEZyZXEpKQpkZi50b3AudGhyZXNoIDwtIHRvcC5wcmVkLmNlbGx0eXBlW29yZGVyKHRvcC5wcmVkLmNlbGx0eXBlJFZhcjEsLXRvcC5wcmVkLmNlbGx0eXBlJEZyZXEpLF0Kcm93Lm5hbWVzKGRmLnRvcC50aHJlc2gpIDwtIE5VTEwKZGYudG9wLnRocmVzaCRJIDwtIHJvdy5uYW1lcyhkZi50b3AudGhyZXNoKQpgYGAKClRyeSB3aXRoIG9ubHkgdGhlIG1pZGJyYWluIGFuZCBzdHJpYXR1bSBCaGFkdXJpCgpgYGB7cn0KCgpzZXUuciA8LSByZWFkUkRTKCIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvRGF0YS9zY1JOQXNlcS9QdWJsaWNEYXRhL0JoYWR1cmlfbWlkYnJhaW5fc3RyaWF0dW0uUkRTIikKSWRlbnRzKHNldS5yKSA8LSAiY2VsbF9jbHVzdGVyIgpJZGVudHMobmV1cm9ucy5zdWIpIDwtICJMZXZlbDMiCgojIGZpbmQgdGhlIHJlZmVyZW5jZSBhbmNob3JzCmFuY2hvcnMgPC0gRmluZFRyYW5zZmVyQW5jaG9ycyhyZWZlcmVuY2UgPSBzZXUuciwgcXVlcnkgPSBuZXVyb25zLnN1YiwgZGltcyA9IDE6MjUpCnByaW50KCJnZXR0aW5nIHByZWRpY3Rpb25zIikKcHJlZGljdGlvbnMgPC0gVHJhbnNmZXJEYXRhKGFuY2hvcnNldCA9IGFuY2hvcnMsIHJlZmRhdGEgPSBzZXUuciRjZWxsX2NsdXN0ZXIsIGsud2VpZ2h0ID0gNTApCm5ldXJvbnMuc3ViIDwtIEFkZE1ldGFEYXRhKG5ldXJvbnMuc3ViLCBwcmVkaWN0aW9ucyRwcmVkaWN0ZWQuaWQsIGNvbC5uYW1lID0gIkJoYS5tLnByZWQiKQpuZXVyb25zLnN1YiA8LSBBZGRNZXRhRGF0YShuZXVyb25zLnN1YiwgcHJlZGljdGlvbnMkcHJlZGljdGlvbi5zY29yZS5tYXgsIGNvbC5uYW1lID0gInByZWRpY3Rpb24uc2NvcmUubWF4IikKCnRhYmxlKG5ldXJvbnMuc3ViJEJoYS5tLnByZWQpCgpuZXVyb25zLnN1YiRCaGEubS5wcmVkLnRocmVzaCA8LSBpZmVsc2UobmV1cm9ucy5zdWIkcHJlZGljdGlvbi5zY29yZS5tYXggPiAwLjcwLCBuZXVyb25zLnN1YiRCaGEubS5wcmVkLCAibm9uZSIpCgpEaW1QbG90KG5ldXJvbnMuc3ViLCBncm91cC5ieSA9ICdCaGEubS5wcmVkLnRocmVzaCcpCnRhYmxlKG5ldXJvbnMuc3ViJEJoYS5tLnByZWQudGhyZXNoKQoKCiMgYWxsIHByZWRpY2l0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKG5ldXJvbnMuc3ViJExldmVsMywgbmV1cm9ucy5zdWIkQmhhLm0ucHJlZCkpCnQubGFibGVzJEZyZXEgPC0gYXMuZG91YmxlKHQubGFibGVzJEZyZXEpCmdncGxvdCh0LmxhYmxlcywgYWVzKHkgPSBGcmVxLCB4ID0gVmFyMSwgZmlsbCA9IFZhcjIpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdD0gImlkZW50aXR5IikgKyBSb3RhdGVkQXhpcygpIAoKdG9wLnByZWQuY2VsbHR5cGUgPC0gYXMuZGF0YS5mcmFtZSh0LmxhYmxlcyAgJT4lIGdyb3VwX2J5KFZhcjEpICAlPiUgdG9wX24oMiwgRnJlcSkpCmRmLnRvcCA8LSB0b3AucHJlZC5jZWxsdHlwZVtvcmRlcih0b3AucHJlZC5jZWxsdHlwZSRWYXIxLC10b3AucHJlZC5jZWxsdHlwZSRGcmVxKSxdCnJvdy5uYW1lcyhkZi50b3ApIDwtIE5VTEwKZGYudG9wJEkgPC0gcm93Lm5hbWVzKGRmLnRvcCkKCiMgd2l0aCB0aHJlc2hvbGQKdC5sYWJsZXMgPC0gYXMuZGF0YS5mcmFtZSh0YWJsZShuZXVyb25zLnN1YiRMZXZlbDMsIG5ldXJvbnMuc3ViJEJoYS5tLnByZWQudGhyZXNoKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCgp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wLnRocmVzaCA8LSB0b3AucHJlZC5jZWxsdHlwZVtvcmRlcih0b3AucHJlZC5jZWxsdHlwZSRWYXIxLC10b3AucHJlZC5jZWxsdHlwZSRGcmVxKSxdCnJvdy5uYW1lcyhkZi50b3AudGhyZXNoKSA8LSBOVUxMCmRmLnRvcC50aHJlc2gkSSA8LSByb3cubmFtZXMoZGYudG9wLnRocmVzaCkKCgpgYGAKClVzZSB0aGUgZGV2ZWxvcGluZyBmb3JicmFpbiBkYXRhc2V0IEthcm9saW5za2kKCmBgYHtyfQoKc2V1LnIgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUHVibGljRGF0YS9LYXJvbGluc2tpX0RldkZvcmVicmFpbl9kb3duc2FtcGxlX0xldmVsMS5SRFMiKQpJZGVudHMoc2V1LnIpIDwtICJDbHVzdGVycyIKSWRlbnRzKG5ldXJvbnMuc3ViKSA8LSAiTGV2ZWwzIgoKIyBmaW5kIHRoZSByZWZlcmVuY2UgYW5jaG9ycwphbmNob3JzIDwtIEZpbmRUcmFuc2ZlckFuY2hvcnMocmVmZXJlbmNlID0gc2V1LnIsIHF1ZXJ5ID0gbmV1cm9ucy5zdWIsIGRpbXMgPSAxOjI1KQpwcmludCgiZ2V0dGluZyBwcmVkaWN0aW9ucyIpCnByZWRpY3Rpb25zIDwtIFRyYW5zZmVyRGF0YShhbmNob3JzZXQgPSBhbmNob3JzLCByZWZkYXRhID0gc2V1LnIkQ2x1c3RlcnMsIGsud2VpZ2h0ID0gNTApCm5ldXJvbnMuc3ViIDwtIEFkZE1ldGFEYXRhKG5ldXJvbnMuc3ViLCBwcmVkaWN0aW9ucyRwcmVkaWN0ZWQuaWQsIGNvbC5uYW1lID0gIksucHJlZCIpCm5ldXJvbnMuc3ViIDwtIEFkZE1ldGFEYXRhKG5ldXJvbnMuc3ViLCBwcmVkaWN0aW9ucyRwcmVkaWN0aW9uLnNjb3JlLm1heCwgY29sLm5hbWUgPSAicHJlZGljdGlvbi5zY29yZS5tYXgiKQoKdGFibGUobmV1cm9ucy5zdWIkSy5wcmVkKQoKbmV1cm9ucy5zdWIkSy5wcmVkLnRocmVzaCA8LSBpZmVsc2UobmV1cm9ucy5zdWIkcHJlZGljdGlvbi5zY29yZS5tYXggPiAwLjcwLCBuZXVyb25zLnN1YiRLLnByZWQsICJub25lIikKCkRpbVBsb3QobmV1cm9ucy5zdWIsIGdyb3VwLmJ5ID0gJ0sucHJlZC50aHJlc2gnKQp0YWJsZShuZXVyb25zLnN1YiRLLnByZWQudGhyZXNoKQoKCiMgYWxsIHByZWRpY2l0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKG5ldXJvbnMuc3ViJExldmVsMywgbmV1cm9ucy5zdWIkSy5wcmVkKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCgp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wIDwtIHRvcC5wcmVkLmNlbGx0eXBlW29yZGVyKHRvcC5wcmVkLmNlbGx0eXBlJFZhcjEsLXRvcC5wcmVkLmNlbGx0eXBlJEZyZXEpLF0Kcm93Lm5hbWVzKGRmLnRvcCkgPC0gTlVMTApkZi50b3AkSSA8LSByb3cubmFtZXMoZGYudG9wKQoKIyB3aXRoIHRocmVzaG9sZAp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKG5ldXJvbnMuc3ViJExldmVsMywgbmV1cm9ucy5zdWIkSy5wcmVkLnRocmVzaCkpCnQubGFibGVzJEZyZXEgPC0gYXMuZG91YmxlKHQubGFibGVzJEZyZXEpCmdncGxvdCh0LmxhYmxlcywgYWVzKHkgPSBGcmVxLCB4ID0gVmFyMSwgZmlsbCA9IFZhcjIpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdD0gImlkZW50aXR5IikgKyBSb3RhdGVkQXhpcygpIAoKdG9wLnByZWQuY2VsbHR5cGUgPC0gYXMuZGF0YS5mcmFtZSh0LmxhYmxlcyAgJT4lIGdyb3VwX2J5KFZhcjEpICAlPiUgdG9wX24oMiwgRnJlcSkpCmRmLnRvcC50aHJlc2ggPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wLnRocmVzaCkgPC0gTlVMTApkZi50b3AudGhyZXNoJEkgPC0gcm93Lm5hbWVzKGRmLnRvcC50aHJlc2gpCgpgYGAKCk5vd2Frb3dza2kgZGV2ZWxvcGluZyBjb3J0ZXgKCmBgYHtyfQpzZXUuciA8LSByZWFkUkRTKCIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvRGF0YS9zY1JOQXNlcS9QdWJsaWNEYXRhL05vd2Frb3dza2lfZGV2X2NvcnRleHQuUkRTIikKSWRlbnRzKHNldS5yKSA8LSAiV0dDTkFjbHVzdGVyIgpJZGVudHMobmV1cm9ucy5zdWIpIDwtICJMZXZlbDMiCgojIGZpbmQgdGhlIHJlZmVyZW5jZSBhbmNob3JzCmFuY2hvcnMgPC0gRmluZFRyYW5zZmVyQW5jaG9ycyhyZWZlcmVuY2UgPSBzZXUuciwgcXVlcnkgPSBuZXVyb25zLnN1YiwgZGltcyA9IDE6MjUpCnByaW50KCJnZXR0aW5nIHByZWRpY3Rpb25zIikKcHJlZGljdGlvbnMgPC0gVHJhbnNmZXJEYXRhKGFuY2hvcnNldCA9IGFuY2hvcnMsIHJlZmRhdGEgPSBzZXUuciRXR0NOQWNsdXN0ZXIsIGsud2VpZ2h0ID0gNTApCm5ldXJvbnMuc3ViIDwtIEFkZE1ldGFEYXRhKG5ldXJvbnMuc3ViLCBwcmVkaWN0aW9ucyRwcmVkaWN0ZWQuaWQsIGNvbC5uYW1lID0gIk4ucHJlZCIpCm5ldXJvbnMuc3ViIDwtIEFkZE1ldGFEYXRhKG5ldXJvbnMuc3ViLCBwcmVkaWN0aW9ucyRwcmVkaWN0aW9uLnNjb3JlLm1heCwgY29sLm5hbWUgPSAicHJlZGljdGlvbi5zY29yZS5tYXgiKQoKdGFibGUobmV1cm9ucy5zdWIkTi5wcmVkKQoKbmV1cm9ucy5zdWIkTi5wcmVkLnRocmVzaCA8LSBpZmVsc2UobmV1cm9ucy5zdWIkcHJlZGljdGlvbi5zY29yZS5tYXggPiAwLjcwLCBuZXVyb25zLnN1YiROLnByZWQsICJub25lIikKCkRpbVBsb3QobmV1cm9ucy5zdWIsIGdyb3VwLmJ5ID0gJ04ucHJlZC50aHJlc2gnKQp0YWJsZShuZXVyb25zLnN1YiROLnByZWQudGhyZXNoKQoKCiMgYWxsIHByZWRpY2l0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKG5ldXJvbnMuc3ViJExldmVsMywgbmV1cm9ucy5zdWIkTi5wcmVkKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCgp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wIDwtIHRvcC5wcmVkLmNlbGx0eXBlW29yZGVyKHRvcC5wcmVkLmNlbGx0eXBlJFZhcjEsLXRvcC5wcmVkLmNlbGx0eXBlJEZyZXEpLF0Kcm93Lm5hbWVzKGRmLnRvcCkgPC0gTlVMTApkZi50b3AkSSA8LSByb3cubmFtZXMoZGYudG9wKQoKIyB3aXRoIHRocmVzaG9sZAp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKG5ldXJvbnMuc3ViJExldmVsMywgbmV1cm9ucy5zdWIkTi5wcmVkLnRocmVzaCkpCnQubGFibGVzJEZyZXEgPC0gYXMuZG91YmxlKHQubGFibGVzJEZyZXEpCmdncGxvdCh0LmxhYmxlcywgYWVzKHkgPSBGcmVxLCB4ID0gVmFyMSwgZmlsbCA9IFZhcjIpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdD0gImlkZW50aXR5IikgKyBSb3RhdGVkQXhpcygpIAoKdG9wLnByZWQuY2VsbHR5cGUgPC0gYXMuZGF0YS5mcmFtZSh0LmxhYmxlcyAgJT4lIGdyb3VwX2J5KFZhcjEpICAlPiUgdG9wX24oMiwgRnJlcSkpCmRmLnRvcC50aHJlc2ggPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wLnRocmVzaCkgPC0gTlVMTApkZi50b3AudGhyZXNoJEkgPC0gcm93Lm5hbWVzKGRmLnRvcC50aHJlc2gpCgpgYGAKCkNoZWNrIHRoZSBEQSBuZXVyb25zIGFuZCBOb25lLW5ldXJvbnMgaW4gdGhlIEthbWF0aAoKCmBgYHtyfQoKc2F2ZVJEUyhuZXVyb25zLnN1YiwgcGFzdGUob3V0cHV0X3BhdGgsIm5ldXJvbnMuc3ViLlJEUyIsc2VwID0gIiIpKQpzYXZlUkRTKGFzdHJvLnN1YjIsIHBhc3RlKG91dHB1dF9wYXRoLCJhc3Ryby5zdWIuUkRTIixzZXAgPSAiIikpCgpuZXVyb25zLnN1YiA8LSByZWFkUkRTKHBhc3RlKG91dHB1dF9wYXRoLCJuZXVyb25zLnN1Yi5SRFMiLHNlcCA9ICIiKSkKCnNldS5yIDwtIHJlYWRSRFMoIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL01hY29za29fRGF0YS9LYW1hdGhfREFfTm9uREFzdWIuUkRTIikKSWRlbnRzKHNldS5yKSA8LSAiQ2VsbF9TdWJ0eXBlIgpJZGVudHMobmV1cm9ucy5zdWIpIDwtICJMZXZlbDMiCgpzZXUuciA8LSBOb3JtYWxpemVEYXRhKHNldS5yLCBub3JtYWxpemF0aW9uLm1ldGhvZCA9ICJMb2dOb3JtYWxpemUiLCBzY2FsZS5mYWN0b3IgPSAxMDAwMCkKc2V1LnIgPC0gRmluZFZhcmlhYmxlRmVhdHVyZXMoc2V1LnIsIHNlbGVjdGlvbi5tZXRob2QgPSAidnN0IiwgbmZlYXR1cmVzID0gMjAwMCkKc2V1LnIgPC0gU2NhbGVEYXRhKHNldS5yKQpzZXUuciA8LSBSdW5QQ0Eoc2V1LnIpCgpzYXZlUkRTKHNldS5yLCAiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvTWFjb3Nrb19EYXRhL0thbWF0aF9EQV9Ob25EQXN1Yi5SRFMiKQoKIyBmaW5kIHRoZSByZWZlcmVuY2UgYW5jaG9ycwphbmNob3JzIDwtIEZpbmRUcmFuc2ZlckFuY2hvcnMocmVmZXJlbmNlID0gc2V1LnIsIHF1ZXJ5ID0gbmV1cm9ucy5zdWIsIGRpbXMgPSAxOjI1KQpwcmludCgiZ2V0dGluZyBwcmVkaWN0aW9ucyIpCnByZWRpY3Rpb25zIDwtIFRyYW5zZmVyRGF0YShhbmNob3JzZXQgPSBhbmNob3JzLCByZWZkYXRhID0gc2V1LnIkQ2VsbF9TdWJ0eXBlLCBrLndlaWdodCA9IDMwKQpuZXVyb25zLnN1YiA8LSBBZGRNZXRhRGF0YShuZXVyb25zLnN1YiwgcHJlZGljdGlvbnMkcHJlZGljdGVkLmlkLCBjb2wubmFtZSA9ICJuZXVyLnByZWQiKQpuZXVyb25zLnN1YiA8LSBBZGRNZXRhRGF0YShuZXVyb25zLnN1YiwgcHJlZGljdGlvbnMkcHJlZGljdGlvbi5zY29yZS5tYXgsIGNvbC5uYW1lID0gInByZWRpY3Rpb24uc2NvcmUubWF4IikKCnRhYmxlKG5ldXJvbnMuc3ViJG5ldXIucHJlZCkKCm5ldXJvbnMuc3ViJG5ldXIucHJlZC50aHJlc2ggPC0gaWZlbHNlKG5ldXJvbnMuc3ViJHByZWRpY3Rpb24uc2NvcmUubWF4ID4gMC40NSwgbmV1cm9ucy5zdWIkbmV1ci5wcmVkLCAibm9uZSIpCgpEaW1QbG90KG5ldXJvbnMuc3ViLCBncm91cC5ieSA9ICduZXVyLnByZWQudGhyZXNoJykKdGFibGUobmV1cm9ucy5zdWIkbmV1ci5wcmVkLnRocmVzaCkKCgojIGFsbCBwcmVkaWN0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKG5ldXJvbnMuc3ViJExldmVsMywgbmV1cm9ucy5zdWIkbmV1ci5wcmVkKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCgp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wIDwtIHRvcC5wcmVkLmNlbGx0eXBlW29yZGVyKHRvcC5wcmVkLmNlbGx0eXBlJFZhcjEsLXRvcC5wcmVkLmNlbGx0eXBlJEZyZXEpLF0Kcm93Lm5hbWVzKGRmLnRvcCkgPC0gTlVMTApkZi50b3AkSSA8LSByb3cubmFtZXMoZGYudG9wKQoKIyB3aXRoIHRocmVzaG9sZAp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKG5ldXJvbnMuc3ViJExldmVsMywgbmV1cm9ucy5zdWIkbmV1ci5wcmVkLnRocmVzaCkpCnQubGFibGVzJEZyZXEgPC0gYXMuZG91YmxlKHQubGFibGVzJEZyZXEpCmdncGxvdCh0LmxhYmxlcywgYWVzKHkgPSBGcmVxLCB4ID0gVmFyMSwgZmlsbCA9IFZhcjIpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdD0gImlkZW50aXR5IikgKyBSb3RhdGVkQXhpcygpIAoKdG9wLnByZWQuY2VsbHR5cGUgPC0gYXMuZGF0YS5mcmFtZSh0LmxhYmxlcyAgJT4lIGdyb3VwX2J5KFZhcjEpICAlPiUgdG9wX24oMiwgRnJlcSkpCmRmLnRvcC50aHJlc2ggPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wLnRocmVzaCkgPC0gTlVMTApkZi50b3AudGhyZXNoJEkgPC0gcm93Lm5hbWVzKGRmLnRvcC50aHJlc2gpCgpgYGAKCgoKCgpMYWJlbCBhZ2FpbiBhZnRlciBtb3JlIHRyYW5zZmVyIGxhYmVscyAKCgoKCgoKU3Vic2V0IG91dCB0aGUgQXN0cm9jeXRlcyBmb3IgYW5ub3RhdGlvbgoKYGBge3J9CgpJZGVudHMoc2V1LnEpIDwtICdMZXZlbDMnCiMgTGV2ZWwgMwpjbHVzdGVyLmlkcyA8LSBjKCJBc3RybzEiLCJOZXVyb25zMSIsIlJHMSIsIkFzdHJvMiIsIk5ldXJvbnMyIiwKICAgICAgICAgICAgICAgICAiQXN0cm8zIiwiQXN0cm80IiwiTmV1cm9uczMiLCJSRzIiLCJOZXVyb25zNCIsCiAgICAgICAgICAgICAgICAgIkFzdHJvNSIsIk5ldXJvbnM1IiwiUkczLU5QQyIsIkRBTmV1cm9uczEiLCJOZXVyb25zNiIsCiAgICAgICAgICAgICAgICAgIk1peCIsIlJHNCIsIkVuZG90aGVsaWFsLU5QQyIsIk5ldXJvbnM4LWluaC1tYXgiLCJEQU5ldXJvbnMyIiwKICAgICAgICAgICAgICAgICAiREFOZXVyb25zMyIsIlJHNSIsIlJHNi1lcGkiLCJSRzciLCJSRy1PUEMiCiAgICAgICAgICAgICAgICAgKQoKYXN0cm8ubGlzdCA8LSBjKCJBc3RybzEiLCJBc3RybzIiLCJBc3RybzMiLCJBc3RybzQiLAogICAgICAgICAgICAgICAgICJBc3RybzUiLCJNaXgiCiAgICAgICAgICAgICAgICAgKQoKYXN0cm8uc3ViIDwtIHN1YnNldChzZXUucSwgaWRlbnRzID0gYXN0cm8ubGlzdCkKCnRhYmxlKGFzdHJvLnN1YiRMZXZlbDMpCkRpbVBsb3QoYXN0cm8uc3ViLCBsYWJlbCA9IFRSVUUsIHJlcGVsID0gVFJVRSkKCgpgYGAKCklkZW50aWZ5IG1hcmtlcnMgb2YgYXN0cm9jeXRlIHN1Ymdyb3VwcwoKYGBge3J9CgpJZGVudHMoc2V1LnEpIDwtICdMZXZlbDMnCgpDbHVzdGVyTWFya2VycyA8LSBGaW5kQWxsTWFya2Vycyhhc3Ryby5zdWIpCgp0b3AzIDwtIENsdXN0ZXJNYXJrZXJzICU+JSBncm91cF9ieShjbHVzdGVyKSAlPiUgdG9wX24obj0zLCB3dCA9IGF2Z19sb2cyRkMpCkRvSGVhdG1hcChhc3Ryby5zdWIsIGZlYXR1cmVzID0gdG9wMyRnZW5lLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIpCgptYXJrZXIudG9wMyA8LSB1bmlxdWUodG9wMyRnZW5lKQpEb3RQbG90KGFzdHJvLnN1YiwgZmVhdHVyZXMgPSBtYXJrZXIudG9wMykgKyBSb3RhdGVkQXhpcygpCgp3cml0ZS5jc3YoQ2x1c3Rlck1hcmtlcnMsIHBhc3RlKG91dHB1dF9wYXRoLCJDbHVzdGVyTWFya2Vyc0xldmVsM0FzdHJvU3ViLmNzdiIpKQoKCgpgYGAKCgpBc3RybyAxIGFuZCAyLCBBc3RybyAzIGFuZCA0IGFyZSBzaW1pbGFyIGluIG1ha2Vycy4gIFRoZXNlIG1pZ2h0IGJlIG1lcmdlZC4KCgpGaW5kIHRoZSBtYXJrZXJzIGJldHdlZW4gYXN0cm8gMyBhbmQgNCBvbmx5CgpgYGB7cn0KCklkZW50cyhzZXUucSkgPC0gJ0xldmVsMycKCkNsdXN0ZXJNYXJrZXJzMzQgPC0gRmluZE1hcmtlcnMoYXN0cm8uc3ViLCBpZGVudC4xID0gIkFzdHJvMyIsIGlkZW50LjIgPSAiQXN0cm80Iiwgb25seS5wb3MgPSBUUlVFKQpDbHVzdGVyTWFya2VyczM0IDwtIEZpbmRNYXJrZXJzKGFzdHJvLnN1YiwgaWRlbnQuMSA9ICJBc3RybzQiLCBpZGVudC4yID0gIkFzdHJvMyIsIG9ubHkucG9zID0gVFJVRSkKCnRvcC51cCA8LSBDbHVzdGVyTWFya2VyczM0ICU+JSB0b3BfbihuPTUsIHd0ID0gYXZnX2xvZzJGQykKdG9wLmRvd24gPC0gQ2x1c3Rlck1hcmtlcnMzNCAlPiUgdG9wX24obj0tNSwgd3QgPSBhdmdfbG9nMkZDKQpEb0hlYXRtYXAoYXN0cm8uc3ViLCBmZWF0dXJlcyA9IGMocm93bmFtZXModG9wLnVwKSxyb3duYW1lcyh0b3AuZG93bikpLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIpCgojIHRoZXNlIGFyZSBhbGwgdXAgaW4gYXN0cm80CnVwLmRvd24gPC0gYygiU1BJTlQyIiwgIlJHQ0MiLCAiTk5NVCIsICJUUkEyQiIsICJCRFAxIiwKICAgICAgICAgICAgICJERFIyIiwgIkNPUEIyIiwgIlNFTEVOT1MiLCAiQUxESDNBMiIsICJERFg0MiIsICJDUCIsICJDUFZMIiwgIkFSTDRDIikKIyB0aGUgZXhwcmVzc2lvbiB3YXMgYWxsIGxvdywgaGlnaGVyIGluIG1peGVkCiMgbm8gZ29vZCBtYXJrZXJzCgojIHVwIGluIGFzdHJvMyBidXQgbm90IHNpZ25pZmljYW50CnVwLmRvd24gPC0gYygiQVRQMUEyIiwgIlBUTiIsICJBUE9EIiwgIkRMSzEiLCAiUEFCUE4xIiwgIlRUWUgxIiwgIkNETzEiKQpEb3RQbG90KGFzdHJvLnN1YiwgZmVhdHVyZXMgPSB1cC5kb3duKSArIFJvdGF0ZWRBeGlzKCkgCgoKIyBQVE4gaXMgdXAgaW4gQXN0cm8zCgpgYGAKCkkgd2lsbCBtZXJnZSBBc3RybzMgYW5kIEFzdHJvNApNYXliZSAxIGFuZCAyIGFsc28gbmVlZCB0byBiZSBtZXJnZWQKCgpgYGB7cn0KCklkZW50cyhhc3Ryby5zdWIpIDwtICdMZXZlbDMnCgpDbHVzdGVyTWFya2VyczEyIDwtIEZpbmRNYXJrZXJzKGFzdHJvLnN1YiwgaWRlbnQuMSA9ICJBc3RybzEiLCBpZGVudC4yID0gIkFzdHJvMiIsIG9ubHkucG9zID0gVFJVRSkKQ2x1c3Rlck1hcmtlcnMyMSA8LSBGaW5kTWFya2Vycyhhc3Ryby5zdWIsIGlkZW50LjEgPSAiQXN0cm8yIiwgaWRlbnQuMiA9ICJBc3RybzEiLCBvbmx5LnBvcyA9IFRSVUUpCgojIGFzdHJvMiB1cAp1cC5kb3duIDwtIGMoIkVTTTEiLCAiUlNQTzIiLCAiSFRSQTEiLCAiS0NOUTEwVDEiLCAiU09YMiIsICJDQ1NFUjIiLCAiQ0FMRDEiLCAiUEpBMiIpCkRvdFBsb3QoYXN0cm8uc3ViLCBmZWF0dXJlcyA9IHVwLmRvd24pICsgUm90YXRlZEF4aXMoKSAKCiMgZ29vZCBtYXJrZXJzIGFzdHJvMjogRVNNMSwgU09YMiwgUEpBMgoKIyBhc3RybzEgdXAgbm90IHNpZ25pZmljYW50CnVwLmRvd24gPC0gYygiTkRVRkFCMSIsICJSUFMyOSIsICJBVFA1UE8iLCAiUk5GNSIsICJIRERDMiIsICJQT0xSMUQiLCAiRkFNMjI5QiIsICJFRUYxRCIpCkRvdFBsb3QoYXN0cm8uc3ViLCBmZWF0dXJlcyA9IHVwLmRvd24pICsgUm90YXRlZEF4aXMoKSAKIyBub3QgZ29vZCBtYXJrZXIgZm9yIGFzdHJvIDEKCgpgYGAKCkknbGwgbWVyZ2UgYXN0cm8xIGFuZCBhc3RybzIsICBhbHNvIGFzdHJvMyBhbmQgYXN0cm80CgpgYGB7cn0KCklkZW50cyhzZXUucSkgPC0gJ1JOQV9zbm5fcmVzLjEuOCcKCiNJZGVudHMoc2V1LnEpIDwtICdMZXZlbDMnCiMgTGV2ZWwgMwojIG1lcmdlIGFzdHJvMSArIGFzdHJvMiA9IGFzdHJvMSwgYXN0cm8zKyBhc3RybzQgPSBhc3RybzIsIG5vdyBhc3RybzUgPSBhc3RybzMKY2x1c3Rlci5pZHMgPC0gYygiQXN0cm8xIiwiTmV1cm9uczEiLCJSRzEiLCJBc3RybzEiLCJOZXVyb25zMiIsCiAgICAgICAgICAgICAgICAgIkFzdHJvMiIsIkFzdHJvMiIsIk5ldXJvbnMzIiwiUkcyIiwiTmV1cm9uczQiLAogICAgICAgICAgICAgICAgICJBc3RybzMiLCJOZXVyb25zNSIsIlJHMy1OUEMiLCJEQU5ldXJvbnMxIiwiTmV1cm9uczYiLAogICAgICAgICAgICAgICAgICJNaXgiLCJSRzQiLCJFbmRvdGhlbGlhbC1OUEMiLCJOZXVyb25zOC1pbmgtbWF4IiwiREFOZXVyb25zMiIsCiAgICAgICAgICAgICAgICAgIkRBTmV1cm9uczMiLCJSRzUiLCJSRzYtZXBpIiwiUkc3IiwiUkctT1BDIgogICAgICAgICAgICAgICAgICkKCgpuYW1lcyhjbHVzdGVyLmlkcykgPC0gbGV2ZWxzKHNldS5xKQpzZXUucSA8LSBSZW5hbWVJZGVudHMoc2V1LnEsIGNsdXN0ZXIuaWRzKQpzZXUucSRMZXZlbDQgPC0gSWRlbnRzKHNldS5xKQoKCgoKYXN0cm8ubGlzdCA8LSBjKCJBc3RybzEiLCJBc3RybzIiLCJBc3RybzMiLCJNaXgiCiAgICAgICAgICAgICAgICAgKQoKYXN0cm8uc3ViIDwtIHN1YnNldChzZXUucSwgaWRlbnRzID0gYXN0cm8ubGlzdCkKCnRhYmxlKGFzdHJvLnN1YiRMZXZlbDQpCkRpbVBsb3QoYXN0cm8uc3ViLCBncm91cC5ieSA9ICJMZXZlbDQiKQoKCgpgYGAKCmBgYHtyfQoKIyBjbHVzdGVyIG1hcmtlcnMgd2l0aCBuZXcgQXN0cm8gZ3JvdXBpbmdzCklkZW50cyhzZXUucSkgPC0gJ0xldmVsNCcKCkNsdXN0ZXJNYXJrZXJzIDwtIEZpbmRBbGxNYXJrZXJzKGFzdHJvLnN1Yiwgb25seS5wb3MgPSBUUlVFKQoKdG9wMyA8LSBDbHVzdGVyTWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKG49NSwgd3QgPSBhdmdfbG9nMkZDKQpEb0hlYXRtYXAoYXN0cm8uc3ViLCBmZWF0dXJlcyA9IHRvcDMkZ2VuZSwgc2l6ZT0zLCBhbmdsZSA9OTAsIGdyb3VwLmJhci5oZWlnaHQgPSAwLjAyKQoKbWFya2VyLnRvcDMgPC0gdW5pcXVlKHRvcDMkZ2VuZSkKRG90UGxvdChhc3Ryby5zdWIsIGZlYXR1cmVzID0gbWFya2VyLnRvcDMpICsgUm90YXRlZEF4aXMoKQoKd3JpdGUuY3N2KENsdXN0ZXJNYXJrZXJzLCBwYXN0ZShvdXRwdXRfcGF0aCwiQ2x1c3Rlck1hcmtlcnNMZXZlbDRBc3Ryb1N1Yi5jc3YiKSkKCiMjIyBob3cgd2lsbCB0aGlzIGxvb2sgd2l0aG91dCBtaXg/CgoKYXN0cm8ubGlzdCA8LSBjKCJBc3RybzEiLCJBc3RybzIiLCJBc3RybzMiCiAgICAgICAgICAgICAgICAgKQoKYXN0cm8uc3ViMiA8LSBzdWJzZXQoc2V1LnEsIGlkZW50cyA9IGFzdHJvLmxpc3QpCgp0YWJsZShhc3Ryby5zdWIyJExldmVsNCkKRGltUGxvdChhc3Ryby5zdWIyLCBncm91cC5ieSA9ICJMZXZlbDQiKQoKSWRlbnRzKHNldS5xKSA8LSAnTGV2ZWw0JwoKQ2x1c3Rlck1hcmtlcnMgPC0gRmluZEFsbE1hcmtlcnMoYXN0cm8uc3ViMiwgb25seS5wb3MgPSBUUlVFKQoKdG9wMyA8LSBDbHVzdGVyTWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKG49NSwgd3QgPSBhdmdfbG9nMkZDKQpEb0hlYXRtYXAoYXN0cm8uc3ViMiwgZmVhdHVyZXMgPSB0b3AzJGdlbmUsIHNpemU9MywgYW5nbGUgPTkwLCBncm91cC5iYXIuaGVpZ2h0ID0gMC4wMikKCm1hcmtlci50b3AzIDwtIHVuaXF1ZSh0b3AzJGdlbmUpCkRvdFBsb3QoYXN0cm8uc3ViMiwgZmVhdHVyZXMgPSBtYXJrZXIudG9wMykgKyBSb3RhdGVkQXhpcygpCgp3cml0ZS5jc3YoQ2x1c3Rlck1hcmtlcnMsIHBhc3RlKG91dHB1dF9wYXRoLCJDbHVzdGVyTWFya2Vyc0xldmVsNEFzdHJvU3Vibm9NaXguY3N2IikpCgoKYGBgCgpUaGVyZSBhcmUgY2xlYXJlciBtYXJrZXJzIHdpdGhvdXQgdGhlIG1peCBwb3B1bGF0aW9uCgpDaGVjayB0aGUgR08gdGVybXMgaW4gdGhlIGFzdHJvY3l0ZSBzdWJ0eXBlcwoKYGBge3J9CmxpYnJhcnkoZW5yaWNoUikKCnNldEVucmljaHJTaXRlKCJFbnJpY2hyIikgIyBIdW1hbiBnZW5lcwojIGxpc3Qgb2YgYWxsIHRoZSBkYXRhYmFzZXMKCiMgbGliYXJpZXMgd2l0aCBjZWxsIHR5cGVzCmRicyA8LSBsaXN0RW5yaWNockRicygpCmRicwpkYiA8LSBjKCdHT19DZWxsdWxhcl9Db21wb25lbnRfMjAxNScsJ0dPX0Jpb2xvZ2ljYWxfUHJvY2Vzc18yMDE1JywKICAgICAgICAnQ2VsbE1hcmtlcl9BdWdtZW50ZWRfMjAyMScsJ0F6aW11dGhfQ2VsbF9UeXBlc18yMDIxJykKCiMgZW5yaWNocihnZW5lcywgZGF0YWJhc2VzID0gTlVMTCkKCmdyb3VwLmxpc3QgPC0gYXMuY2hhcmFjdGVyKHVuaXF1ZShDbHVzdGVyTWFya2VycyRjbHVzdGVyKSkKCgpncm91cCA8LSAiQXN0cm8xIgoKI2Zvcihncm91cCBpbiBncm91cC5saXN0KXsKcHJpbnQoZ3JvdXApClVwLmxpc3QgPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGZpbHRlcihjbHVzdGVyID09IGdyb3VwICYgYXZnX2xvZzJGQyA+IDApCmdlbmVzIDwtIFVwLmxpc3QkZ2VuZQoKRXIgPC0gZW5yaWNocihnZW5lcywgZGF0YWJhc2VzID0gZGIpCnByaW50KHBsb3RFbnJpY2goRXJbWzFdXSwgc2hvd1Rlcm1zID0gMjAsIG51bUNoYXIgPSA0MCwgeSA9ICJDb3VudCIsIG9yZGVyQnkgPSAiUC52YWx1ZSIpKQpwcmludChwbG90RW5yaWNoKEVyW1syXV0sIHNob3dUZXJtcyA9IDIwLCBudW1DaGFyID0gNDAsIHkgPSAiQ291bnQiLCBvcmRlckJ5ID0gIlAudmFsdWUiKSkKcHJpbnQocGxvdEVucmljaChFcltbM11dLCBzaG93VGVybXMgPSAyMCwgbnVtQ2hhciA9IDQwLCB5ID0gIkNvdW50Iiwgb3JkZXJCeSA9ICJQLnZhbHVlIikpCnByaW50KHBsb3RFbnJpY2goRXJbWzRdXSwgc2hvd1Rlcm1zID0gMjAsIG51bUNoYXIgPSA0MCwgeSA9ICJDb3VudCIsIG9yZGVyQnkgPSAiUC52YWx1ZSIpKQoKdC5HT2NlbGwgPC0gRXJbWzFdXSAlPiUgc2VsZWN0KFRlcm0sIEdlbmVzLCBDb21iaW5lZC5TY29yZSkKcHJpbnQodC5HT2NlbGwpCgp0LkdPYmlvIDwtIEVyW1syXV0gJT4lIHNlbGVjdChUZXJtLCBHZW5lcywgQ29tYmluZWQuU2NvcmUpCnByaW50KHQuR09iaW8pCgp0LkNlbGxNYXJrZXIgPC0gRXJbWzNdXSAlPiUgc2VsZWN0KFRlcm0sIEdlbmVzLCBDb21iaW5lZC5TY29yZSkKcHJpbnQodC5DZWxsTWFya2VyKQoKCnQuQXppIDwtIEVyW1s0XV0gJT4lIHNlbGVjdChUZXJtLCBHZW5lcywgQ29tYmluZWQuU2NvcmUpCnByaW50KHQuQXppKQojfQoKCgpgYGAKCgpQcmVkaWN0IHRoZSBBc3Ryb2N5dGUgc3ViZ3JvdXBzCgpgYGB7cn0Kc2V1LnIgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUHVibGljRGF0YS9Ob3dha293c2tpX2Rldl9jb3J0ZXh0LlJEUyIpCklkZW50cyhzZXUucikgPC0gIldHQ05BY2x1c3RlciIKSWRlbnRzKGFzdHJvLnN1YjIpIDwtICJMZXZlbDQiCgojIGZpbmQgdGhlIHJlZmVyZW5jZSBhbmNob3JzCmFuY2hvcnMgPC0gRmluZFRyYW5zZmVyQW5jaG9ycyhyZWZlcmVuY2UgPSBzZXUuciwgcXVlcnkgPSBhc3Ryby5zdWIyLCBkaW1zID0gMToyNSkKcHJpbnQoImdldHRpbmcgcHJlZGljdGlvbnMiKQpwcmVkaWN0aW9ucyA8LSBUcmFuc2ZlckRhdGEoYW5jaG9yc2V0ID0gYW5jaG9ycywgcmVmZGF0YSA9IHNldS5yJFdHQ05BY2x1c3Rlciwgay53ZWlnaHQgPSA1MCkKYXN0cm8uc3ViMiA8LSBBZGRNZXRhRGF0YShhc3Ryby5zdWIyLCBwcmVkaWN0aW9ucyRwcmVkaWN0ZWQuaWQsIGNvbC5uYW1lID0gIk4ucHJlZCIpCmFzdHJvLnN1YjIgPC0gQWRkTWV0YURhdGEoYXN0cm8uc3ViMiwgcHJlZGljdGlvbnMkcHJlZGljdGlvbi5zY29yZS5tYXgsIGNvbC5uYW1lID0gInByZWRpY3Rpb24uc2NvcmUubWF4IikKCnRhYmxlKGFzdHJvLnN1YjIkTi5wcmVkKQoKYXN0cm8uc3ViMiROLnByZWQudGhyZXNoIDwtIGlmZWxzZShhc3Ryby5zdWIyJHByZWRpY3Rpb24uc2NvcmUubWF4ID4gMC41MCwgYXN0cm8uc3ViMiROLnByZWQsICJub25lIikKCkRpbVBsb3QoYXN0cm8uc3ViMiwgZ3JvdXAuYnkgPSAnTi5wcmVkLnRocmVzaCcpCnRhYmxlKGFzdHJvLnN1YjIkTi5wcmVkLnRocmVzaCkKCgojIGFsbCBwcmVkaWNpdGlvbnMKdC5sYWJsZXMgPC0gYXMuZGF0YS5mcmFtZSh0YWJsZShhc3Ryby5zdWIyJExldmVsNCwgYXN0cm8uc3ViMiROLnByZWQpKQp0LmxhYmxlcyRGcmVxIDwtIGFzLmRvdWJsZSh0LmxhYmxlcyRGcmVxKQpnZ3Bsb3QodC5sYWJsZXMsIGFlcyh5ID0gRnJlcSwgeCA9IFZhcjEsIGZpbGwgPSBWYXIyKSkgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQ9ICJpZGVudGl0eSIpICsgUm90YXRlZEF4aXMoKSAKCnRvcC5wcmVkLmNlbGx0eXBlIDwtIGFzLmRhdGEuZnJhbWUodC5sYWJsZXMgICU+JSBncm91cF9ieShWYXIxKSAgJT4lIHRvcF9uKDIsIEZyZXEpKQpkZi50b3AgPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wKSA8LSBOVUxMCmRmLnRvcCRJIDwtIHJvdy5uYW1lcyhkZi50b3ApCgojIHdpdGggdGhyZXNob2xkCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoYXN0cm8uc3ViMiRMZXZlbDQsIGFzdHJvLnN1YjIkTi5wcmVkLnRocmVzaCkpCnQubGFibGVzJEZyZXEgPC0gYXMuZG91YmxlKHQubGFibGVzJEZyZXEpCmdncGxvdCh0LmxhYmxlcywgYWVzKHkgPSBGcmVxLCB4ID0gVmFyMSwgZmlsbCA9IFZhcjIpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdD0gImlkZW50aXR5IikgKyBSb3RhdGVkQXhpcygpIAoKdG9wLnByZWQuY2VsbHR5cGUgPC0gYXMuZGF0YS5mcmFtZSh0LmxhYmxlcyAgJT4lIGdyb3VwX2J5KFZhcjEpICAlPiUgdG9wX24oMiwgRnJlcSkpCmRmLnRvcC50aHJlc2ggPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wLnRocmVzaCkgPC0gTlVMTApkZi50b3AudGhyZXNoJEkgPC0gcm93Lm5hbWVzKGRmLnRvcC50aHJlc2gpCgpgYGAKUHJlZGljdGlvbnMgZGV2ZWxvcGluZyBmb3JlYnJhaW4gCgpgYGB7cn0Kc2V1LnIgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUHVibGljRGF0YS9LYXJvbGluc2tpX0RldkZvcmVicmFpbl9kb3duc2FtcGxlX0xldmVsMS5SRFMiKQoKSWRlbnRzKHNldS5yKSA8LSAiQ2x1c3RlcnMiCklkZW50cyhhc3Ryby5zdWIyKSA8LSAiTGV2ZWw0IgoKCmFzdHJvLnN1YjIgPC0gU2NhbGVEYXRhKGFzdHJvLnN1YjIpCgojIGZpbmQgdGhlIHJlZmVyZW5jZSBhbmNob3JzCmFuY2hvcnMgPC0gRmluZFRyYW5zZmVyQW5jaG9ycyhyZWZlcmVuY2UgPSBzZXUuciwgcXVlcnkgPSBhc3Ryby5zdWIyLCBkaW1zID0gMToyNSkKcHJpbnQoImdldHRpbmcgcHJlZGljdGlvbnMiKQpwcmVkaWN0aW9ucyA8LSBUcmFuc2ZlckRhdGEoYW5jaG9yc2V0ID0gYW5jaG9ycywgcmVmZGF0YSA9IHNldS5yJENsdXN0ZXJzLCBrLndlaWdodCA9IDMwKQphc3Ryby5zdWIyIDwtIEFkZE1ldGFEYXRhKGFzdHJvLnN1YjIsIHByZWRpY3Rpb25zJHByZWRpY3RlZC5pZCwgY29sLm5hbWUgPSAiay5wcmVkIikKYXN0cm8uc3ViMiA8LSBBZGRNZXRhRGF0YShhc3Ryby5zdWIyLCBwcmVkaWN0aW9ucyRwcmVkaWN0aW9uLnNjb3JlLm1heCwgY29sLm5hbWUgPSAicHJlZGljdGlvbi5zY29yZS5tYXgiKQoKdGFibGUoYXN0cm8uc3ViMiRrLnByZWQpCgphc3Ryby5zdWIyJGsucHJlZC50aHJlc2ggPC0gaWZlbHNlKGFzdHJvLnN1YjIkcHJlZGljdGlvbi5zY29yZS5tYXggPiAwLjcwLCBhc3Ryby5zdWIyJGsucHJlZCwgIm5vbmUiKQoKRGltUGxvdChhc3Ryby5zdWIyLCBncm91cC5ieSA9ICdOLnByZWQudGhyZXNoJykKdGFibGUoYXN0cm8uc3ViMiRrLnByZWQudGhyZXNoKQoKCiMgYWxsIHByZWRpY2l0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKGFzdHJvLnN1YjIkTGV2ZWw0LCBhc3Ryby5zdWIyJGsucHJlZCkpCnQubGFibGVzJEZyZXEgPC0gYXMuZG91YmxlKHQubGFibGVzJEZyZXEpCmdncGxvdCh0LmxhYmxlcywgYWVzKHkgPSBGcmVxLCB4ID0gVmFyMSwgZmlsbCA9IFZhcjIpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdD0gImlkZW50aXR5IikgKyBSb3RhdGVkQXhpcygpIAoKdG9wLnByZWQuY2VsbHR5cGUgPC0gYXMuZGF0YS5mcmFtZSh0LmxhYmxlcyAgJT4lIGdyb3VwX2J5KFZhcjEpICAlPiUgdG9wX24oMiwgRnJlcSkpCmRmLnRvcCA8LSB0b3AucHJlZC5jZWxsdHlwZVtvcmRlcih0b3AucHJlZC5jZWxsdHlwZSRWYXIxLC10b3AucHJlZC5jZWxsdHlwZSRGcmVxKSxdCnJvdy5uYW1lcyhkZi50b3ApIDwtIE5VTEwKZGYudG9wJEkgPC0gcm93Lm5hbWVzKGRmLnRvcCkKCiMgd2l0aCB0aHJlc2hvbGQKdC5sYWJsZXMgPC0gYXMuZGF0YS5mcmFtZSh0YWJsZShhc3Ryby5zdWIyJExldmVsNCwgYXN0cm8uc3ViMiRrLnByZWQudGhyZXNoKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCgp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wLnRocmVzaCA8LSB0b3AucHJlZC5jZWxsdHlwZVtvcmRlcih0b3AucHJlZC5jZWxsdHlwZSRWYXIxLC10b3AucHJlZC5jZWxsdHlwZSRGcmVxKSxdCnJvdy5uYW1lcyhkZi50b3AudGhyZXNoKSA8LSBOVUxMCmRmLnRvcC50aHJlc2gkSSA8LSByb3cubmFtZXMoZGYudG9wLnRocmVzaCkKCmBgYAoKS2FtYXRoIGFzdHJvY3l0ZSBzdWJncm91cHMgCgpgYGB7cn0KCnNldS5yIDwtIHJlYWRSRFMoIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL01hY29za29fRGF0YS9QRF9hc3Ryby5SZHMiKQpJZGVudHMoc2V1LnIpIDwtICJDZWxsX1N1YnR5cGUiCklkZW50cyhhc3Ryby5zdWIyKSA8LSAiTGV2ZWw0IgoKc2V1LnIgPC0gTm9ybWFsaXplRGF0YShzZXUuciwgbm9ybWFsaXphdGlvbi5tZXRob2QgPSAiTG9nTm9ybWFsaXplIiwgc2NhbGUuZmFjdG9yID0gMTAwMDApCnNldS5yIDwtIEZpbmRWYXJpYWJsZUZlYXR1cmVzKHNldS5yLCBzZWxlY3Rpb24ubWV0aG9kID0gInZzdCIsIG5mZWF0dXJlcyA9IDIwMDApCnNldS5yIDwtIFNjYWxlRGF0YShzZXUucikKc2V1LnIgPC0gUnVuUENBKHNldS5yKQoKIyBmaW5kIHRoZSByZWZlcmVuY2UgYW5jaG9ycwphbmNob3JzIDwtIEZpbmRUcmFuc2ZlckFuY2hvcnMocmVmZXJlbmNlID0gc2V1LnIsIHF1ZXJ5ID0gYXN0cm8uc3ViMiwgZGltcyA9IDE6MjUpCnByaW50KCJnZXR0aW5nIHByZWRpY3Rpb25zIikKcHJlZGljdGlvbnMgPC0gVHJhbnNmZXJEYXRhKGFuY2hvcnNldCA9IGFuY2hvcnMsIHJlZmRhdGEgPSBzZXUuciRDZWxsX1N1YnR5cGUsIGsud2VpZ2h0ID0gMzApCmFzdHJvLnN1YjIgPC0gQWRkTWV0YURhdGEoYXN0cm8uc3ViMiwgcHJlZGljdGlvbnMkcHJlZGljdGVkLmlkLCBjb2wubmFtZSA9ICJNYXMucHJlZCIpCmFzdHJvLnN1YjIgPC0gQWRkTWV0YURhdGEoYXN0cm8uc3ViMiwgcHJlZGljdGlvbnMkcHJlZGljdGlvbi5zY29yZS5tYXgsIGNvbC5uYW1lID0gInByZWRpY3Rpb24uc2NvcmUubWF4IikKCnRhYmxlKGFzdHJvLnN1YjIkTWFzLnByZWQpCgphc3Ryby5zdWIyJE1hcy5wcmVkLnRocmVzaCA8LSBpZmVsc2UoYXN0cm8uc3ViMiRwcmVkaWN0aW9uLnNjb3JlLm1heCA+IDAuOTAsIGFzdHJvLnN1YjIkTWFzLnByZWQsICJub25lIikKCkRpbVBsb3QoYXN0cm8uc3ViMiwgZ3JvdXAuYnkgPSAnTWFzLnByZWQudGhyZXNoJykKdGFibGUoYXN0cm8uc3ViMiRNYXMucHJlZC50aHJlc2gpCgoKIyBhbGwgcHJlZGljaXRpb25zCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoYXN0cm8uc3ViMiRMZXZlbDQsIGFzdHJvLnN1YjIkTWFzLnByZWQpKQp0LmxhYmxlcyRGcmVxIDwtIGFzLmRvdWJsZSh0LmxhYmxlcyRGcmVxKQpnZ3Bsb3QodC5sYWJsZXMsIGFlcyh5ID0gRnJlcSwgeCA9IFZhcjEsIGZpbGwgPSBWYXIyKSkgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQ9ICJpZGVudGl0eSIpICsgUm90YXRlZEF4aXMoKSAKCnRvcC5wcmVkLmNlbGx0eXBlIDwtIGFzLmRhdGEuZnJhbWUodC5sYWJsZXMgICU+JSBncm91cF9ieShWYXIxKSAgJT4lIHRvcF9uKDIsIEZyZXEpKQpkZi50b3AgPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wKSA8LSBOVUxMCmRmLnRvcCRJIDwtIHJvdy5uYW1lcyhkZi50b3ApCgojIHdpdGggdGhyZXNob2xkCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoYXN0cm8uc3ViMiRMZXZlbDQsIGFzdHJvLnN1YjIkTWFzLnByZWQudGhyZXNoKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCgp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wLnRocmVzaCA8LSB0b3AucHJlZC5jZWxsdHlwZVtvcmRlcih0b3AucHJlZC5jZWxsdHlwZSRWYXIxLC10b3AucHJlZC5jZWxsdHlwZSRGcmVxKSxdCnJvdy5uYW1lcyhkZi50b3AudGhyZXNoKSA8LSBOVUxMCmRmLnRvcC50aHJlc2gkSSA8LSByb3cubmFtZXMoZGYudG9wLnRocmVzaCkKCmBgYAoKQWR1bHQgYnJhaW4gbWlkYnJhaW4gYW5kIHN0cmlhdHVtIAoKYGBge3J9CgpzZXUuciA8LSByZWFkUkRTKCIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvRGF0YS9zY1JOQXNlcS9QdWJsaWNEYXRhL0JoYWR1cmlfbWlkYnJhaW5fc3RyaWF0dW0uUkRTIikKSWRlbnRzKHNldS5yKSA8LSAiY2VsbF9jbHVzdGVyIgpJZGVudHMoYXN0cm8uc3ViMikgPC0gIkxldmVsNCIKCiMgZmluZCB0aGUgcmVmZXJlbmNlIGFuY2hvcnMKYW5jaG9ycyA8LSBGaW5kVHJhbnNmZXJBbmNob3JzKHJlZmVyZW5jZSA9IHNldS5yLCBxdWVyeSA9IGFzdHJvLnN1YjIsIGRpbXMgPSAxOjI1KQpwcmludCgiZ2V0dGluZyBwcmVkaWN0aW9ucyIpCnByZWRpY3Rpb25zIDwtIFRyYW5zZmVyRGF0YShhbmNob3JzZXQgPSBhbmNob3JzLCByZWZkYXRhID0gc2V1LnIkY2VsbF9jbHVzdGVyLCBrLndlaWdodCA9IDMwKQojIG5vdGUgdGhhdCBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBhbmNob3JzIHlvdSBuZWVkIHRvIHJlZHVjZSB0aGUgay53ZWlnaHQgZnJvbSBkZWZhdWx0IDUwCmFzdHJvLnN1YjIgPC0gQWRkTWV0YURhdGEoYXN0cm8uc3ViMiwgcHJlZGljdGlvbnMkcHJlZGljdGVkLmlkLCBjb2wubmFtZSA9ICJCaGEucHJlZCIpCmFzdHJvLnN1YjIgPC0gQWRkTWV0YURhdGEoYXN0cm8uc3ViMiwgcHJlZGljdGlvbnMkcHJlZGljdGlvbi5zY29yZS5tYXgsIGNvbC5uYW1lID0gInByZWRpY3Rpb24uc2NvcmUubWF4IikKCnRhYmxlKGFzdHJvLnN1YjIkQmhhLnByZWQpCgphc3Ryby5zdWIyJEJoYS5wcmVkLnRocmVzaCA8LSBpZmVsc2UoYXN0cm8uc3ViMiRwcmVkaWN0aW9uLnNjb3JlLm1heCA+IDAuOTAsIGFzdHJvLnN1YjIkQmhhLnByZWQsICJub25lIikKCkRpbVBsb3QoYXN0cm8uc3ViMiwgZ3JvdXAuYnkgPSAnQmhhLnByZWQudGhyZXNoJykKdGFibGUoYXN0cm8uc3ViMiRCaGEucHJlZC50aHJlc2gpCgoKIyBhbGwgcHJlZGljaXRpb25zCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoYXN0cm8uc3ViMiRMZXZlbDQsIGFzdHJvLnN1YjIkQmhhLnByZWQpKQp0LmxhYmxlcyRGcmVxIDwtIGFzLmRvdWJsZSh0LmxhYmxlcyRGcmVxKQpnZ3Bsb3QodC5sYWJsZXMsIGFlcyh5ID0gRnJlcSwgeCA9IFZhcjEsIGZpbGwgPSBWYXIyKSkgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQ9ICJpZGVudGl0eSIpICsgUm90YXRlZEF4aXMoKSAKCnRvcC5wcmVkLmNlbGx0eXBlIDwtIGFzLmRhdGEuZnJhbWUodC5sYWJsZXMgICU+JSBncm91cF9ieShWYXIxKSAgJT4lIHRvcF9uKDIsIEZyZXEpKQpkZi50b3AgPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wKSA8LSBOVUxMCmRmLnRvcCRJIDwtIHJvdy5uYW1lcyhkZi50b3ApCgojIHdpdGggdGhyZXNob2xkCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoYXN0cm8uc3ViMiRMZXZlbDQsIGFzdHJvLnN1YjIkQmhhLnByZWQudGhyZXNoKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCgp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wLnRocmVzaCA8LSB0b3AucHJlZC5jZWxsdHlwZVtvcmRlcih0b3AucHJlZC5jZWxsdHlwZSRWYXIxLC10b3AucHJlZC5jZWxsdHlwZSRGcmVxKSxdCnJvdy5uYW1lcyhkZi50b3AudGhyZXNoKSA8LSBOVUxMCmRmLnRvcC50aHJlc2gkSSA8LSByb3cubmFtZXMoZGYudG9wLnRocmVzaCkKCmBgYApXaWxsIGJlIGJlc3QgdG8gY2hvb3NlIHNvbWUgc3VidHlwZSBtYXJrZXJzCkFzdHJvMSAtIG1vc3QgcHJlZGljdGVkIGFzIGFzdHJvY3l0ZXMsIGhhcyBHTyB0ZXJtcyBkaWZmZXJlbnRhdGlvbiAKQXN0cm8yIC0gR08gdGVybXMgaW52b2x2aW5nIGV4dHJhY2VsbHVsYXIgbWF0cml4CkFzdHJvMyAtIEdvIHRlcm1zIGludm9sdmluZyBjZWxsIGFkaHNpb24gYW5kIHByb3RlaW5zIAoKCgoKU3Vic2V0IFJhZGlhbCBHbGlhIHRvIGdldCBzdWJ0eXBlcwoKYGBge3J9CgpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdMZXZlbDMnKQpEaW1QbG90KHNldS5xLCBncm91cC5ieSA9ICdMZXZlbHMnKQoKSWRlbnRzKHNldS5xKSA8LSAnTGV2ZWxzJwpSRy5zdWIgPC0gc3Vic2V0KHNldS5xLCBpZGVudHMgPSAiUkciKQpEaW1QbG90KFJHLnN1YiwgZ3JvdXAuYnkgPSAnTGV2ZWwzJywgc3BsaXQuYnkgPSAnb3JpZy5pZGVudCcpCgoKCmBgYAoKCkZpcnN0IGNhbGN1bGF0ZSBER0UgYW5kIGRldGVybWluZSBpZiBzb21lIHN1Ymdyb3VwcyBzaG91bGQgYmUgbWVyZ2VkCgpgYGB7cn0KCklkZW50cyhSRy5zdWIpIDwtICdMZXZlbDMnCkNsdXN0ZXJNYXJrZXJzIDwtIEZpbmRBbGxNYXJrZXJzKFJHLnN1Yiwgb25seS5wb3MgPSBUUlVFKQoKdG9wMyA8LSBDbHVzdGVyTWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKG49Mywgd3QgPSBhdmdfbG9nMkZDKQpEb0hlYXRtYXAoUkcuc3ViLCBmZWF0dXJlcyA9IHRvcDMkZ2VuZSwgc2l6ZT0zLCBhbmdsZSA9OTAsIGdyb3VwLmJhci5oZWlnaHQgPSAwLjAyKQoKbWFya2VyLnRvcDMgPC0gdW5pcXVlKHRvcDMkZ2VuZSkKRG90UGxvdChSRy5zdWIsIGZlYXR1cmVzID0gbWFya2VyLnRvcDMpICsgUm90YXRlZEF4aXMoKQoKb3V0cHV0X3BhdGggPC0gIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9Qcm9qZWN0c19QYXBlcnMvUGhlbm9JRC9Gb3JGaWd1cmVzL3NjUk5BLyIKd3JpdGUuY3N2KENsdXN0ZXJNYXJrZXJzLCBwYXN0ZShvdXRwdXRfcGF0aCwiQ2x1c3Rlck1hcmtlcnNSRy5jc3YiKSkKCmBgYApNYW55IHNpZ25pZmljYW50IG1hcmtlcnMgYnV0IG5vdCBhIGxhcmdlIExGQyBmb3IgYW55CkluZGVlZCB0aGUgbWFya2VyIGdlbmVzIGFyZSBoaWdobHkgb3ZlcmxhcHBpbmcgYmV0d2VlbiBtYW55IGdyb3VwcwpSRzcgYW5kIFJHLU9QQyBhcmUgZGlzdGluY3RpdmUgZnJvbSB0aGUgb3RoZXJzCgpSRzEgbWFya2VycyBhcmUgZXhwcmVzc2VkIGluIGFsbCBncm91cHMKUkcxLFJHMixSRzMsUkc0IGFyZSBhbGwgdmVyeSBvdmVybGFwcGluZwpSRzUgUkc2IGFyZSBvdmVybGFwcGluZwoKUkc1IGFuZCBSRzYgYXJlbid0IGV2ZW4gaW4gdGhlIFJhZGlhbCBHbGlhIHNvcnRlZCBwb3B1bGF0aW9uCgpTdWJzZXQganVzdCB0aGUgb3JpZ2luYWwgUkcgcG9wdWxhdGlvbiBhbmQgbG9vayBmb3IgbWFya2VycyB0aGVyZSAKCmBgYHtyfQoKSWRlbnRzKFJHLnN1YikgPC0gJ29yaWcuaWRlbnQnCgpSRy5GQUNTIDwtIHN1YnNldChSRy5zdWIsIGlkZW50cyA9ICJSYWRpYWxHbGlhIikKCkRpbVBsb3QoUkcuRkFDUywgZ3JvdXAuYnkgPSAnTGV2ZWwzJykKCgpgYGAKCgpHZXQgbWFya2VycyBmb3IgdGhlc2UgZ3JvdXBzCgpgYGB7cn0KCklkZW50cyhSRy5GQUNTKSA8LSAnTGV2ZWwzJwpDbHVzdGVyTWFya2VycyA8LSBGaW5kQWxsTWFya2VycyhSRy5GQUNTLCBvbmx5LnBvcyA9IFRSVUUpCgp0b3AzIDwtIENsdXN0ZXJNYXJrZXJzICU+JSBncm91cF9ieShjbHVzdGVyKSAlPiUgdG9wX24obj0zLCB3dCA9IGF2Z19sb2cyRkMpCkRvSGVhdG1hcChSRy5GQUNTLCBmZWF0dXJlcyA9IHRvcDMkZ2VuZSwgc2l6ZT0zLCBhbmdsZSA9OTAsIGdyb3VwLmJhci5oZWlnaHQgPSAwLjAyKQoKbWFya2VyLnRvcDMgPC0gdW5pcXVlKHRvcDMkZ2VuZSkKRG90UGxvdChSRy5GQUNTLCBmZWF0dXJlcyA9IG1hcmtlci50b3AzKSArIFJvdGF0ZWRBeGlzKCkKCnRvcC4xMCA8LSBDbHVzdGVyTWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKG49MTAsIHd0ID0gYXZnX2xvZzJGQykKCgpgYGAKCk1heWJlIFJHMSBhbmQgUkcyIHNob3VsZCBiZSBtZXJnZWQgCgpgYGB7cn0KCiMgUkcxIHZzIFJHMgoKY2x1c3Rlcm1hcmtlcnMuMS4yIDwtIEZpbmRNYXJrZXJzKFJHLkZBQ1MsIGlkZW50LjEgPSAiUkcxIiwgaWRlbnQuMiA9ICJSRzIiKQoKY2x1c3Rlcm1hcmtlcnMuMi40IDwtIEZpbmRNYXJrZXJzKFJHLkZBQ1MsIGlkZW50LjEgPSAiUkcyIiwgaWRlbnQuMiA9ICJSRzQiKQoKCmBgYAoKTm8gcG9zaXRpdmUgbWFya2VycyBmb3IgUkcxIHZzIFJHMiBob3dldmVyIHRoZXJlIGFyZSBsb3RzIG9mIHVwIHJlZ3VsYXRlZCBtYXJrZXJzIGluIFJHMgoKClN1YnNldCBvdXQgUkcxLTQKCmBgYHtyfQoKSWRlbnRzKFJHLnN1YikgPC0gJ0xldmVsMycKUkcuc3ViMiA8LSBzdWJzZXQoUkcuc3ViLCBpZGVudHMgPSBjKCJSRzEiLCJSRzIiLCJSRzMtTlBDIiwiUkc0IikpCgoKSWRlbnRzKFJHLnN1YjIpIDwtICdMZXZlbDMnCkNsdXN0ZXJNYXJrZXJzIDwtIEZpbmRBbGxNYXJrZXJzKFJHLnN1YjIsIG9ubHkucG9zID0gVFJVRSkKCnRvcDMgPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSB0b3BfbihuPTMsIHd0ID0gYXZnX2xvZzJGQykKRG9IZWF0bWFwKFJHLnN1YjIsIGZlYXR1cmVzID0gdG9wMyRnZW5lLCBzaXplPTMsIGFuZ2xlID05MCwgZ3JvdXAuYmFyLmhlaWdodCA9IDAuMDIpCgptYXJrZXIudG9wMyA8LSB1bmlxdWUodG9wMyRnZW5lKQpEb3RQbG90KFJHLnN1YjIsIGZlYXR1cmVzID0gbWFya2VyLnRvcDMpICsgUm90YXRlZEF4aXMoKQoKdG9wLjEwIDwtIENsdXN0ZXJNYXJrZXJzICU+JSBncm91cF9ieShjbHVzdGVyKSAlPiUgdG9wX24obj0xMCwgd3QgPSBhdmdfbG9nMkZDKQoKYGBgClJHMiBhbmQgNCBhcmUgYWxzbyBvdmVybGFwcGluZyBpbiBtYXJrZXIgZXhwcmVzc2lvbiAtIGJ1dCBpbiAyIHZzIDQgdGhlcmUgYXJlIHBvc2l0aXZlIG1hcmtlcnMgaW4gYm90aCBkaXJlY3Rpb25zIAoKSSB3aWxsIG1lcmdlIFJHMiBhbmQgUkc0CgpUZXN0IGlmIFJHNSBhbmQgUkc2IHNob3VsZCBiZSBtZXJnZWQgaW50byBvbmUgZ3JvdXAKCmBgYHtyfQoKY2x1c3Rlcm1hcmtlcnMuNS42IDwtIEZpbmRNYXJrZXJzKFJHLnN1YiwgaWRlbnQuMSA9ICJSRzUiLCBpZGVudC4yID0gIlJHNi1lcGkiKQoKYGBgCgpUaGVyZSBhcmUgdmVyeSBkaWZmZXJlbnQgYW5kIHNob3VsZG4ndCBiZSBtZXJnZWQKCgpgYGB7cn0KCiMgbWVyZ2UgUkcxIGFuZCBSRzIKRGltUGxvdChSRy5zdWIpCiMgbm93IHRoZSBudW1iZXJzIHdpbGwgYWxsIHNoaWZ0IGFsdGhvdWdoIG1heWJlIFJHNiBzaG91bGQgYmUgbmFtZWQgZXBpdGhlbGlhbCBjZWxscyBhbmQgUkctT1BDIGFzIE9QQ3MKCmNsdXN0ZXIuaWRzIDwtIGMoIlJHMSIsIlJHMSIsIlJHMiIsIlJHMyIsIlJHNCIsImVwaSIsIlJHNSIsIm9wYyIKICAgICAgICAgICAgICAgICApCgoKbmFtZXMoY2x1c3Rlci5pZHMpIDwtIGxldmVscyhSRy5zdWIpClJHLnN1YiA8LSBSZW5hbWVJZGVudHMoUkcuc3ViLCBjbHVzdGVyLmlkcykKUkcuc3ViJExldmVsNCA8LSBJZGVudHMoUkcuc3ViKQpEaW1QbG90KFJHLnN1YiwgZ3JvdXAuYnkgPSAnTGV2ZWw0JykKCgpgYGAKCkNoZWNrIHRoZSBjbHVzdGVyIG1hcmtlcnMgYWdhaW4KCmBgYHtyfQoKCklkZW50cyhSRy5zdWIpIDwtICdMZXZlbDQnCgpDbHVzdGVyTWFya2VycyA8LSBGaW5kQWxsTWFya2VycyhSRy5zdWIsIG9ubHkucG9zID0gVFJVRSkKCnRvcDMgPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSB0b3BfbihuPTMsIHd0ID0gYXZnX2xvZzJGQykKRG9IZWF0bWFwKFJHLnN1YiwgZmVhdHVyZXMgPSB0b3AzJGdlbmUsIHNpemU9MywgYW5nbGUgPTkwLCBncm91cC5iYXIuaGVpZ2h0ID0gMC4wMikKCm1hcmtlci50b3AzIDwtIHVuaXF1ZSh0b3AzJGdlbmUpCkRvdFBsb3QoUkcuc3ViLCBmZWF0dXJlcyA9IG1hcmtlci50b3AzKSArIFJvdGF0ZWRBeGlzKCkKCnRvcC4xMCA8LSBDbHVzdGVyTWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKG49MTAsIHd0ID0gYXZnX2xvZzJGQykKCiMgdGhlc2UgbWFya2VycyBhcmUgdGVycmlibGUKIyBuZWVkIHRvIGNhbGN1bGF0ZSBzZXBhcmF0ZWx5IAojUkc0IHZzIEVwaQoKYGBgClRoZSBtYXJrZXJzIGFyZSBhbGwgYWN0dWFsbHkgbG93ZXIgZXZlbiB0aG91Z2ggaXQgc2F5cyBhIHBvc2l0aXZlIExGQyBmb3IgUkcxIChtZXJnZWQgd2l0aCAyKQoKYGBge3J9CklkZW50cyhSRy5zdWIpIDwtICJMZXZlbDMiCgpSRzEubWFya2Vycy4xIDwtIEZpbmRNYXJrZXJzKFJHLnN1YiwgaWRlbnQuMSA9ICJSRzEiLCBpZGVudC4yID0gYygiUkcyIiwiUkctT1BDIikpClJHMS5tYXJrZXJzLjIgPC0gRmluZE1hcmtlcnMoUkcuc3ViLCBpZGVudC4xID0gIlJHMSIsIGlkZW50LjIgPSBjKCJSRzIiLCJSRzMtTlBDIiwiUkc0IiApKQpSRzEubWFya2Vycy4zIDwtIEZpbmRNYXJrZXJzKFJHLnN1YiwgaWRlbnQuMSA9ICJSRzEiLCBpZGVudC4yID0gYygiUkcyIiwiUkczLU5QQyIsIlJHNCIsIlJHNSIsIlJHNi1lcGkiLCJSRy1PUEMiKSkKCnRhYmxlKFJHLnN1YiRMZXZlbDMpCgpgYGAKCgoKCkknbGwgaGF2ZSBhIGxvb2sgYXQgdGhlIHByZWRpY3Rpb25zIGFuZCBtYXJrZXIgbGlzdAoKYGBge3J9CgoKIyBwcmVkaWN0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKFJHLnN1YiRMZXZlbDMsIFJHLnN1YiRCaGEubWlkLnN0cmkucHJlZCkpCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoUkcuc3ViJExldmVsMywgUkcuc3ViJEFJVzYwLnByZWQpKQp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKFJHLnN1YiRMZXZlbDMsIFJHLnN1YiRBSVcxMjAucHJlZCkpCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoUkcuc3ViJExldmVsMywgUkcuc3ViJE1CT0FJVy5wcmVkKSkgIyBzYW1lIGFzIEFJVzEyMCBidXQgcHJlZGljdGlvbnMgYXJlIHNsaWdobHR5IGRpZmZlcmVudCwgbW9zdGx5IHRoZSBzYW1lCnQubGFibGVzIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoUkcuc3ViJExldmVsMywgUkcuc3ViJE1CT0FTVDIzLnByZWQpKQp0LmxhYmxlcyRGcmVxIDwtIGFzLmRvdWJsZSh0LmxhYmxlcyRGcmVxKQpnZ3Bsb3QodC5sYWJsZXMsIGFlcyh5ID0gRnJlcSwgeCA9IFZhcjEsIGZpbGwgPSBWYXIyKSkgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQ9ICJpZGVudGl0eSIpICsgUm90YXRlZEF4aXMoKSAKCnRvcC5wcmVkLmNlbGx0eXBlIDwtIGFzLmRhdGEuZnJhbWUodC5sYWJsZXMgICU+JSBncm91cF9ieShWYXIxKSAgJT4lIHRvcF9uKDIsIEZyZXEpKQpkZi50b3AgPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wKSA8LSBOVUxMCmRmLnRvcCRJIDwtIHJvdy5uYW1lcyhkZi50b3ApCgoKCmBgYAoKVGhlcmUgYXJlIG5vdCByZWFsbHkgUkcgaW4gbWF0dXJlIGJyYWlucwoKRG8gc29tZSBtb3JlIHByZWRpY3Rpb25zIHdpdGggdGhlIGRldmVsb3BpbmcgQnJhaW4KCmBgYHtyfQoKc2V1LnIgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUHVibGljRGF0YS9LYXJvbGluc2tpX0RldkZvcmVicmFpbl9kb3duc2FtcGxlX0xldmVsMS5SRFMiKQoKSWRlbnRzKHNldS5yKSA8LSAiQ2x1c3RlcnMiCklkZW50cyhSRy5zdWIpIDwtICJMZXZlbDMiCgoKc2V1LnEgPC0gU2NhbGVEYXRhKFJHLnN1YikKCiMgZmluZCB0aGUgcmVmZXJlbmNlIGFuY2hvcnMKYW5jaG9ycyA8LSBGaW5kVHJhbnNmZXJBbmNob3JzKHJlZmVyZW5jZSA9IHNldS5yLCBxdWVyeSA9IHNldS5xLCBkaW1zID0gMToyNSkKcHJpbnQoImdldHRpbmcgcHJlZGljdGlvbnMiKQpwcmVkaWN0aW9ucyA8LSBUcmFuc2ZlckRhdGEoYW5jaG9yc2V0ID0gYW5jaG9ycywgcmVmZGF0YSA9IHNldS5yJENsdXN0ZXJzLCBrLndlaWdodCA9IDMwKQpzZXUucSA8LSBBZGRNZXRhRGF0YShzZXUucSwgcHJlZGljdGlvbnMkcHJlZGljdGVkLmlkLCBjb2wubmFtZSA9ICJrLnByZWQiKQpzZXUucSA8LSBBZGRNZXRhRGF0YShzZXUucSwgcHJlZGljdGlvbnMkcHJlZGljdGlvbi5zY29yZS5tYXgsIGNvbC5uYW1lID0gInByZWRpY3Rpb24uc2NvcmUubWF4IikKCnRhYmxlKHNldS5xJGsucHJlZCkKCgojICBwcmVkaWN0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKHNldS5xJExldmVsMywgc2V1LnEkay5wcmVkKSkKdC5sYWJsZXMkRnJlcSA8LSBhcy5kb3VibGUodC5sYWJsZXMkRnJlcSkKZ2dwbG90KHQubGFibGVzLCBhZXMoeSA9IEZyZXEsIHggPSBWYXIxLCBmaWxsID0gVmFyMikpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0PSAiaWRlbnRpdHkiKSArIFJvdGF0ZWRBeGlzKCkgCgp0b3AucHJlZC5jZWxsdHlwZSA8LSBhcy5kYXRhLmZyYW1lKHQubGFibGVzICAlPiUgZ3JvdXBfYnkoVmFyMSkgICU+JSB0b3BfbigyLCBGcmVxKSkKZGYudG9wIDwtIHRvcC5wcmVkLmNlbGx0eXBlW29yZGVyKHRvcC5wcmVkLmNlbGx0eXBlJFZhcjEsLXRvcC5wcmVkLmNlbGx0eXBlJEZyZXEpLF0Kcm93Lm5hbWVzKGRmLnRvcCkgPC0gTlVMTApkZi50b3AkSSA8LSByb3cubmFtZXMoZGYudG9wKQoKCgoKYGBgCgoKCk5vdyB0aGUgZGV2ZWxvcGluZyBjb3J0ZXggZGF0YQoKYGBge3J9CgoKc2V1LnIgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvUHVibGljRGF0YS9Ob3dha293c2tpX2Rldl9jb3J0ZXh0LlJEUyIpCklkZW50cyhzZXUucikgPC0gIldHQ05BY2x1c3RlciIKSWRlbnRzKFJHLnN1YikgPC0gIkxldmVsMyIKCnNldS5xIDwtIFNjYWxlRGF0YShSRy5zdWIpCgojIGZpbmQgdGhlIHJlZmVyZW5jZSBhbmNob3JzCmFuY2hvcnMgPC0gRmluZFRyYW5zZmVyQW5jaG9ycyhyZWZlcmVuY2UgPSBzZXUuciwgcXVlcnkgPSBzZXUucSwgZGltcyA9IDE6MjUpCnByaW50KCJnZXR0aW5nIHByZWRpY3Rpb25zIikKcHJlZGljdGlvbnMgPC0gVHJhbnNmZXJEYXRhKGFuY2hvcnNldCA9IGFuY2hvcnMsIHJlZmRhdGEgPSBzZXUuciRXR0NOQWNsdXN0ZXIsIGsud2VpZ2h0ID0gMzApCnNldS5xIDwtIEFkZE1ldGFEYXRhKHNldS5xLCBwcmVkaWN0aW9ucyRwcmVkaWN0ZWQuaWQsIGNvbC5uYW1lID0gImRldmNvci5wcmVkIikKc2V1LnEgPC0gQWRkTWV0YURhdGEoc2V1LnEsIHByZWRpY3Rpb25zJHByZWRpY3Rpb24uc2NvcmUubWF4LCBjb2wubmFtZSA9ICJwcmVkaWN0aW9uLnNjb3JlLm1heCIpCgp0YWJsZShzZXUucSRkZXZjb3IucHJlZCkKCgojICBwcmVkaWN0aW9ucwp0LmxhYmxlcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKHNldS5xJExldmVsMywgc2V1LnEkZGV2Y29yLnByZWQpKQp0LmxhYmxlcyRGcmVxIDwtIGFzLmRvdWJsZSh0LmxhYmxlcyRGcmVxKQpnZ3Bsb3QodC5sYWJsZXMsIGFlcyh5ID0gRnJlcSwgeCA9IFZhcjEsIGZpbGwgPSBWYXIyKSkgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQ9ICJpZGVudGl0eSIpICsgUm90YXRlZEF4aXMoKSAKCgoKCnRvcC5wcmVkLmNlbGx0eXBlIDwtIGFzLmRhdGEuZnJhbWUodC5sYWJsZXMgICU+JSBncm91cF9ieShWYXIxKSAgJT4lIHRvcF9uKDIsIEZyZXEpKQpkZi50b3AgPC0gdG9wLnByZWQuY2VsbHR5cGVbb3JkZXIodG9wLnByZWQuY2VsbHR5cGUkVmFyMSwtdG9wLnByZWQuY2VsbHR5cGUkRnJlcSksXQpyb3cubmFtZXMoZGYudG9wKSA8LSBOVUxMCmRmLnRvcCRJIDwtIHJvdy5uYW1lcyhkZi50b3ApCmhlYWQoZGYudG9wKQoKYGBgCgoKSGF2ZSBhIGxvb2sgYXQgdGhlIHBvdGVudGlhbCBtYXJrZXJzIGZvciBSRzEgYW5kIFJHMgoKYGBge3J9Cm1hcmtlcnMgPC0gYygiVE1TQjRYIiwgIlRGUEkyIiwiUkJQMSIsICJMUlJDNzVBIiwgIlJQUzEyIiwgIlJQTDM0IiwgIlJQUzEzIikKCkRvdFBsb3QoUkcuc3ViLCBmZWF0dXJlcz0gbWFya2VycywgZ3JvdXAuYnkgPSAnTGV2ZWwzJykgK1JvdGF0ZWRBeGlzKCkKRG90UGxvdChSRy5zdWIsIGZlYXR1cmVzPSBtYXJrZXJzLCBncm91cC5ieSA9ICdMZXZlbDQnKSArUm90YXRlZEF4aXMoKQoKYGBgCgpBbGwgdGhlIFJHMSBtYXJrZXJzIGFyZSBoaWdoIGluIFJHLU9QQywgYnV0IHRoYXQgc21hbGwgY2x1c3RlciBpcyBwcmVkaWN0ZWQgZGlmZmVyZW50bHkgZnJvbSBSRzEKCgpgYGB7cn0KCiMgdGhlcmUgYXJlIG5vIGdvb2QgcG9zaXRpdmUgbWFya2VycyBmb3IgUkcxCiMgY2FsY3VsYXRlIGFnYWluIHdpdGggbmVnYXRpdmUgbWFya2VycyBpbmNsdWRlZApDbHVzdGVybWFya2Vycy5hbGwgPC0gRmluZEFsbE1hcmtlcnMoUkcuc3ViLCBsb2dmYy50aHJlc2hvbGQgPSAwLjUsIHRlc3QudXNlID0gIk1BU1QiLCBtaW4uY2VsbHMuZmVhdHVyZSA9IDE1KQoKZ2VuZXMuZG93bi5SRzEgPC0gQ2x1c3Rlcm1hcmtlcnMuYWxsICU+JSBncm91cF9ieShjbHVzdGVyKSAlPiUgZmlsdGVyKGF2Z19sb2cyRkMgPCAwICYgcF92YWxfYWRqIDwgMC4wNSAmIGNsdXN0ZXIgPT0gIlJHMSIpCmdlbmVzIDwtIGdlbmVzLmRvd24uUkcxJGdlbmUKCgpDbHVzdGVybWFya2VycyA8LSBGaW5kQWxsTWFya2VycyhSRy5zdWIsIHRlc3QudXNlID0gIk1BU1QiLCBvbmx5LnBvcyA9IFRSVUUpCgpgYGAKCgpDaGVjayBvdXQgdGhlIGRvd24gcmVndWxhdGVkIHBhdGh3YXlzCgpgYGB7cn0KCgpsaWJyYXJ5KGVucmljaFIpCgpzZXRFbnJpY2hyU2l0ZSgiRW5yaWNociIpICMgSHVtYW4gZ2VuZXMKIyBsaXN0IG9mIGFsbCB0aGUgZGF0YWJhc2VzCgojIGxpYmFyaWVzIHdpdGggY2VsbCB0eXBlcwpkYnMgPC0gbGlzdEVucmljaHJEYnMoKQpkYnMKZGIgPC0gYygnR09fQ2VsbHVsYXJfQ29tcG9uZW50XzIwMTUnLCdHT19CaW9sb2dpY2FsX1Byb2Nlc3NfMjAxNScsCiAgICAgICAgJ0h1bWFuX0dlbmVfQXRsYXMnLCAnS0VHR18yMDEzJykKCiMgZW5yaWNocihnZW5lcywgZGF0YWJhc2VzID0gTlVMTCkKI1VwLmxpc3QgPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGZpbHRlcihjbHVzdGVyID09IGdyb3VwICYgYXZnX2xvZzJGQyA+IDApCiNnZW5lcyA8LSBVcC5saXN0JGdlbmUKCiNkb3duIGluIFJHMQoKCkVyIDwtIGVucmljaHIoZ2VuZXMsIGRhdGFiYXNlcyA9IGRiKQpwcmludChwbG90RW5yaWNoKEVyW1sxXV0sIHNob3dUZXJtcyA9IDIwLCBudW1DaGFyID0gNDAsIHkgPSAiQ291bnQiLCBvcmRlckJ5ID0gIlAudmFsdWUiKSkKcHJpbnQocGxvdEVucmljaChFcltbMl1dLCBzaG93VGVybXMgPSAyMCwgbnVtQ2hhciA9IDQwLCB5ID0gIkNvdW50Iiwgb3JkZXJCeSA9ICJQLnZhbHVlIikpCnByaW50KHBsb3RFbnJpY2goRXJbWzNdXSwgc2hvd1Rlcm1zID0gMjAsIG51bUNoYXIgPSA0MCwgeSA9ICJDb3VudCIsIG9yZGVyQnkgPSAiUC52YWx1ZSIpKQpwcmludChwbG90RW5yaWNoKEVyW1s0XV0sIHNob3dUZXJtcyA9IDIwLCBudW1DaGFyID0gNDAsIHkgPSAiQ291bnQiLCBvcmRlckJ5ID0gIlAudmFsdWUiKSkKCnQuR09jZWxsIDwtIEVyW1sxXV0gJT4lIHNlbGVjdChUZXJtLCBHZW5lcywgQ29tYmluZWQuU2NvcmUpCnByaW50KHQuR09jZWxsKQoKdC5HT2JpbyA8LSBFcltbMl1dICU+JSBzZWxlY3QoVGVybSwgR2VuZXMsIENvbWJpbmVkLlNjb3JlKQpwcmludCh0LkdPYmlvKQoKdC5DZWxsTWFya2VyIDwtIEVyW1szXV0gJT4lIHNlbGVjdChUZXJtLCBHZW5lcywgQ29tYmluZWQuU2NvcmUpCnByaW50KHQuQ2VsbE1hcmtlcikKCgp0LkF6aSA8LSBFcltbNF1dICU+JSBzZWxlY3QoVGVybSwgR2VuZXMsIENvbWJpbmVkLlNjb3JlKQpwcmludCh0LkF6aSkKCiMgbm90IHVzZWZ1bAoKCmBgYAoKQ2hlY2sgbWFya2VycyBmcm9tIApQb2xsZW4gLi4uIEtyaWVnc3RlaW4gCgpgYGB7cn0KCiMgUkcgbWFya2VycyB3ZXJlIHVwIGluIG9uZSBncm91cCBvZiBSRyBhbmQgZG93biBhbm90aGVyIAojIFNMQzFBMywgUEFYNiwgU09YMiwgUERHRkQsIEdMSTMgdXAgaW4gb3duIGdyb3VwLCB0aGUgb3RoZXIgaGFzIHVzcCBTVE1OMiBhbmQgTkVVUk9ENgojIHJnLmNvbiA8LSBjKCJWSU0iLCJIRVMiKQpyZyA8LSBjKCJTTEMxQTMiLCAiUEFYNiIsICJTT1gyIiwgIlBER0ZEIiwgIkdMSTMiLCAiU1RNTjIiLCAiTkVVUk9ENiIsICJWSU0iLCAiSEVTMSIpCkRvdFBsb3QoUkcuc3ViLCBmZWF0dXJlcz0gcmcsIGdyb3VwLmJ5ID0gJ0xldmVsMycpICtSb3RhdGVkQXhpcygpCgojIFJHNCBtYXRjaGVzIHRoZSBmaXJzdCBwb3AgU0xDSTFBMywgUEFYNiBTT1gyIGFsc28gb25lIG5ldyBtYXJrZXIgUFRQUnoxIHZlcnkgaGlnaAoKCiMgcHJvZ2VuaXRvciBtYXJrZXJzIGNhbm9uaWNhbCBhbmQgbm92ZWwKIyBFT01FUyA9IFRCUjIKcHJvIDwtIGMoIlRCUjIiLCAiRUxBVkw0IiwgIk5FVVJPRzEiLCAiTkVVUk9EMSIsICJORVVST0Q0IiwgIlBQUDFSMTciLCAiUEVOSyIpCkRvdFBsb3QoUkcuc3ViLCBmZWF0dXJlcz0gcHJvLCBncm91cC5ieSA9ICdMZXZlbDMnKSArUm90YXRlZEF4aXMoKQoKIyBSUDcgaGFzIHNvbWUgcHJvZ2VuIG1hcmtlcnMgTkVVUk9ENAojIFJHLU9QQyBleHByZXNzZXMgUEVOSyBwcm9nZW5pdG9yIG1hcmtlcnMKCiMgQ1JZQUIgaXMgYSBub3ZlbCBHMSBtYXJrZXIKCiMgdmVudHJhbCBSRyBtYXJrZXJzCnJndiA8LSBjKCJDUllBQiIsICJQREdGRCIsICJUQUdMTjIiLCAiRkJYTzMyIiwgIlBBTExEIikKIyBvdXQgc3Z6IApvc3Z6IDwtIGMoIkhPUFgiLCAiUFRQUloxIiwgIlROQyIsICJGQU0xMDdBIiwgIk1PWEQxIikKRG90UGxvdChSRy5zdWIsIGZlYXR1cmVzPSByZ3YsIGdyb3VwLmJ5ID0gJ0xldmVsMycpICtSb3RhdGVkQXhpcygpCkRvdFBsb3QoUkcuc3ViLCBmZWF0dXJlcz0gb3N2eiwgZ3JvdXAuYnkgPSAnTGV2ZWwzJykgK1JvdGF0ZWRBeGlzKCkKCiMgUkcyIGhhcyBoaWdoIGxldmVscyBvZiBDUllBQiBpbiBzb21lIGNlbGxzCgoKCmBgYApSRzQsNSw2IGNsYXNzaWMgUkcgbWFya2VycyBhbmQgaW5kaWNhdGVkIGFzIG91dGVyIFNWWiBSRwpSRzcgaGFzIGludGVybWVkaWF0ZSBwcm9nZW5pdG9yIG1hcmtlcnMKUkcyIC0gZGV2aWRpbmcgY2VsbHMgdXNlIENSWUFCIGFzIGEgbWFya2VyClJHMSBpcyBsaWtlbHkgdGhlIHZlbnRyYWwgUkcgLSBtYXJrIGFzIFNPWDItIApSRy1PUEMgaGFzIGhpcyBWSU0gYW5kIGFsc28gVmVudHJhbCAtIFRBR0xOMgoKTm90IHN1cmUgd2hpY2ggbWFya2VyIGlzIGdvb2QgZm9yIFJHMwoKYGBge3J9CgojIGNoZWNrIHNvbWUgbWFya2VycwpnZW5lcy5yZzMgPC0gQ2x1c3Rlcm1hcmtlcnMgJT4lZmlsdGVyKGNsdXN0ZXIgPT0gIlJHMy1OUEMiICYgcF92YWxfYWRqIDwgMC41ICYgYXZnX2xvZzJGQyA+IDEpCgoKcmczIDwtIGMoIk5FQVQxIiwgIlBPTFIySjMucSIsICJaTUFUMSIsICJERFgxNyIsICJQTklTUiIsICJMVUM3TDMiLCAKICAgICAgICAgIkRTVCIsICJNQUNGMSIsICJBUkdVTDEiLCAiTktUUiIsICJXU0IxIiwgIlNGUFEiKQoKRG90UGxvdChSRy5zdWIsIGZlYXR1cmVzPSByZzMsIGdyb3VwLmJ5ID0gJ0xldmVsMycpICtSb3RhdGVkQXhpcygpCgojIEFsbCB0aGVzZSBtYXJrZXJzIGhhdmUgaGlnaCBleHByZXNzaW9uIGluIFJHMywgb25seSBpbiBhYm91dCAyMC00MCUgY2VsbHMKCgpgYGAKClN0aWxsIG5lZWQgbWFya2VycyBmb3IgNSBhbmQgNgpDaGVjayB0aGUgbGlzdCBhbmQgYWxzbyBkaXN0aW5ndWlzaCBmcm9tIGVhY2gKb3RoZXIKCi0gSSd2ZSBhbHJlYWR5IGZvdW5kIGNsdXN0ZXIgbWFya2VycyA1IHZzIDYgYWJvdmUKCmBgYHtyfQoKbWFya2Vycy41IDwtIGNsdXN0ZXJtYXJrZXJzLjUuNiAlPiUgZmlsdGVyKHBfdmFsX2FkaiA8IDAuMDUgJiBhdmdfbG9nMkZDID4gMC41KQoKcmcuciA8LSByb3duYW1lcyhtYXJrZXJzLjUpCgpEb3RQbG90KFJHLnN1YiwgZmVhdHVyZXMgPSByZy5yKSArIFJvdGF0ZWRBeGlzKCkKCiMgbm8gZ29vZCB0aGUgNSBtYXJrZXJzIGFyZSBoaWdoIGluIDQgb3IgMiBvciBSRy1PUEMKCiMgZnJvbSBhbGwgbWFya2VycyB0aGUgdG9wMyBhcmUgbWl0b2Nob25kcmlhbCBnZW5lcyBpbiA1IGFuZCA2CiMgaGF2ZSBhIGxvb2sgYXQgc29tZSBvdGhlciBvbmVzCgojIGNoZWNrIHNvbWUgbWFya2VycwpnZW5lcy5yZzUgPC0gQ2x1c3Rlcm1hcmtlcnMgJT4lZmlsdGVyKGNsdXN0ZXIgPT0gIlJHNSIgJiBwX3ZhbF9hZGogPCAwLjUgJiBhdmdfbG9nMkZDID4gMC41KQoKIyA1IG92ZXJsYXBzIG1hcmtlcnMgd2l0aCA0IGEgbG90CnJnNSA8LSBjKCJFTVMxIiwgIlRSSCIsICJBS1IxQzEiLCAiUEVCUDEiLCAiQ0xVIiwgIlBUUFJaMSIsICJNRUdGMTAiLCAiUkFCM0IiLCAiU0VMRU5PVyIsICJCV1gxIiwgIk5FTEwyIikKCkRvdFBsb3QoUkcuc3ViLCBmZWF0dXJlcyA9IHJnNSkgKyBSb3RhdGVkQXhpcygpCgojIGZvciBSRzYtZXBpIApnZW5lcy5yZzYgPC0gQ2x1c3Rlcm1hcmtlcnMgJT4lZmlsdGVyKGNsdXN0ZXIgPT0gIlJHNi1lcGkiICYgcF92YWxfYWRqIDwgMC41ICYgYXZnX2xvZzJGQyA+IDAuNSkKcmc2IDwtIGMoIkVNWDIiLCJFQ0VMMSIsICJDUCIsICJHUEhOIiwgIktSVDgiLCAiU0xDMzVGMiIsICJTRVo2TDIiLCAiQU5PMTAiLCAiS0NOSjEzIiwKICAgICAgICAgIk1SUFM2IiwgIkRNS04iLCAiQlJENyIsICJLUlQxOCIsICJTTEM0QTEwIiwgIlNPWDIiLCJORVMiKQojIG5ldXJvZXBpdGhlbGlhbCBjZWxsIG1hcmtlciBhcmUgc3VwcG9zZWQgdG8gYmUgU09YMiBhbmQgTkVTVElOCgpEb3RQbG90KFJHLnN1YiwgZmVhdHVyZXMgPSByZzYpICsgUm90YXRlZEF4aXMoKQoKIyBmb3IgNiBhbG1vc3QgYWxsIHRoZSBtYXJrZXJzIGFyZSBleGNsdXNpdmUgLyB2ZXJ5IGhpZ2ggaW4gNiB0aGVzZSBhcmUgbm90IGhpZ2ggYXQgYWxsCiMgVGhlIGVhcmx5IHByZWRpY3Rpb24gb2YgZXBpdGhlbGlhbCBjZWxscyBkb2Vucyd0IHNlZW0gY29ycmVjdAojIEdQSE4gaXMgZ3lwaHJpbiB3aGljaCBpcyBhIHNjYWxwaG9sZCBwcm90ZWluIGF0IHN5bmFwc2VzIC0gd2VpcmQgdG8gYmUgZXhwcmVzc2VkIGhlcmUKIyBDUCBpcyBhbiBtZXRhbGxvcHJvdGVpbiB0aGF0IGJpbmRzIGlyb24sIHBvc3NpYmx5IGluIHRyYW5zcG9ydAojIEVNWDIgaXMgYSB0cmFuc2NyaXB0aW9uIGZhY3RvciBmb3IgY29ydGljYWwgZGV2ZWxvcG1lbnQKIyBFQ0VMMSBpcyBhIGVub2RvcGV0aWRhc2UgbWVtYnJhbmUgcHJvdGVpbgoKRmVhdHVyZVBsb3Qoc2V1LnEsIGZlYXR1cmVzID0gYygiQ1AiLCAiRUNFTDEiLCAiRU1YMiIsICJWSU0iLCAiU09YMiIsIkhFUzEiLCJQQVg2IikpCkRpbVBsb3Qoc2V1LnEsIGxhYmVsID0gVFJVRSkKCiMgc2VlIGVhY2ggb2YgdGhlIG1hcmtlcnMgCgpyZy5zdWIubWFya2VycyA8LSBjKCJTT1gyIiwiQ1JZQUIiLCJERFgxNyIsIlJUUFJaMSIsIkNMVSIsIkNQIiwiTUFMQVQxIiwiTkVVUk9ENCIsIlBFTksiKQpEaW1QbG90KHNldS5xLCBsYWJlbCA9IFRSVUUpCkZlYXR1cmVQbG90KHNldS5xLCBmZWF0dXJlcyA9IHJnLnN1Yi5tYXJrZXJzKQoKRmVhdHVyZVBsb3QoUkcuc3ViLCBmZWF0dXJlcyA9ICJTT1gyIiwgc3BsaXQuYnkgPSAnTGV2ZWwzJykKIyBSRy1PUEMgaXMgU09YMiBuZWdhdGl2ZQojIFJHIGVwaSBhbmQgUkc3IHZlcnkgbG93IGFuZCBmZXcgCiMgUkcxIG1vc3RseSBuZWdhdGl2ZSBidXQgYSBmZXcgdmVyeSBwb3NpdGl2ZSBjZWxscwoKRmVhdHVyZVBsb3QoUkcuc3ViLCBmZWF0dXJlcyA9ICJIRVMxIiwgc3BsaXQuYnkgPSAnTGV2ZWwzJykKIyBhIGxpdHRsZSBhbGwgb3ZlciBhbG1vc3QgYWxsIGNlbGxzIGhpZ2ggaW4gUkc0CkZlYXR1cmVQbG90KFJHLnN1YiwgZmVhdHVyZXMgPSAiQ1JZQUIiLCBzcGxpdC5ieSA9ICdMZXZlbDMnKQoKCgpgYGAKCgpUaW1lIHRvIGFkZCBvbiB0aGUgZmluYWwgc3ViZ3JvdXAgYW5ub3RhdGlvbnMgLSBkb3VibGUgY2hlY2sgd2hhdCBtYWtlcyBzZW5zZQpJdCBtaWdodCBiZSBlYXNpZXIgdG8gc3BsaXQgdGhlIE5ldXJvbnMgYW5kIFJhZGlhbCBnbGlhIGludG8gc3ViZ3JvdXBzIGFuZCB0aGVuIGNvbXBhcmUgYmV0d2VlbiB0aG9zZSBzdWJncm91cHMuClJHIGl0J3MgaGFyZGVyIGRpZmZlcmVudCBncm91cHMgb3ZlcmxhcAoKSXQgc2VlbXMgbGlrZSBSRzEsMiw0IGFyZSBtb3JlIHNpbWlsYXIKClJHNCBhbmQgUkc2IGFyZSBhbHNvIHZlcnkgc2ltaWxhcgpSRzQgaXMgdGhlIG1vc3QgJ3RydWUnIFJHCgpSRzQgYW5kIDIgb3ZlcmxhcCBhIGxvdCwgYWxzbyBSRzYgb3ZlcmxhcHMgd2l0aCA0IGJ1dCBub3Qgd2l0aCA2CgpBbGwgaGF2ZSBWSU0KUkcxIGlzIG5lZ2F0aXZlIGxvdyBvdGhlciBtYXJrZXJzIEhFUzEsIFNPWDIsIFBBWDYKUkctT1BDIGlzIG5lZ2F0aXZlIGluIFBBWDYKUkc1IGFuZCA2IGhhdmUgaGlnaCB1cHJlZ3VsYXRpb24gb2YgbWl0b2Nob25kcmlhbCBlbmVyZ3kgcHJvZHVjdGlvbiB0cmFuc2NyaXB0cwoKCk1BTEFUMSBoaWdoIGluIDUsNiw3IGFuZCBub25lIGluIHRoZSBvdGhlciBncm91cHMgClJHNyBtb3JlIGFuZCBSRy1PUEMgaGF2ZSBzb21lIGludGVybWVkaWF0ZSBwcm9nZW5pdG9yIG1hcmtlcnMKCjUgYW5kIDYgYXJlIG5vdCBoYXZpbmcgdG9uZXMgb2YgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzIGZyb20gZWFjaG90aGVyLCBidXQgdGhvc2UgZ2VuZXMgYXJlIG92ZXJsYXBwaW5nIHdpdGggdGhlIG90aGVyIGdyb3VwcwoKIEkgbWlnaHQgbWVyZ2UgMiBhbmQgNAogcHJldmlvdXNseSB0ZXN0ZWQgMnZzNCBhbmQgbm90aGluZyBpcyB1cCBpbiAyIGNvbXBhcmVkIHRvIDQgCiAKCgpgYGB7cn0KCiMgbmV1cm9EMSB2ZXJ5IGhpZ2ggZXhwcmVzc2lvbiBpbiBSRzcgYnV0IG1heWJlIG5vdCBpbiBhbGwgdGhlIGNlbGxzCiMgdGVzdCBtYW55IG1hcmtlcnMgLSBJJ3ZlIHR5cGUgaW4gYW5kIHJlbW92ZWQgZm9yIHNwZWVkCiMgIlNQQVJDTDEiCiMgRExLMSBkaXN0aW5ndWlzaGVzIDUgdnMgNiBidXQgaXQgZXhwcmVzc2VkIGluIG1vc3Qgb3RoZXIgdGhhbiA2CiMgc2F2ZSB0aGluZyBmb3IgUFROIGFuZCBFU00xCiMgdXAgaW4gNiA6IE1HUCBhY3R1YWxseSBsb3cgaW4gNiBidXQgY29uc2lzdGFudCwgbm90IGluIDUKIyBGSElUIG5vIGV4cHJlc3NlZCBpbiBhbGwgNiBhbmQgbG93IGV2ZXJ5d2hlcmUKIyBJRDEgZXhwcmVzc2VkIGluIG1vc3Qgb2YgNiAKCkZlYXR1cmVQbG90KFJHLnN1YiwgZmVhdHVyZXMgPSBjKCJJRDEiKSwgc3BsaXQuYnkgPSAnTGV2ZWwzJykKCgoKCmBgYAoKCmBgYHtyfQoKCgoKCmBgYAoKCgoKCgoKCg==